#pragma once #include #include #include #include #include #include #include struct IPIN { struct HIT { uint64_t vaddr; uint32_t imm_offset; uint32_t imm_size; }; std::string symbol; std::size_t local_target; std::size_t field_offset; std::optional hit; }; struct DPIN { struct HIT { uint64_t vaddr; }; struct COMPONENT { std::size_t offset; std::size_t level; std::size_t target; // local pin -> local target, global pin -> global target }; std::string symbol; std::list components; std::optional hit; }; struct FIELD { std::size_t offset; std::size_t size; std::size_t alignment; std::size_t flags; std::size_t idx; }; struct TARGET { std::string name; std::size_t size; std::map fields; }; struct CU { std::unordered_map local_targets; std::unordered_map ipins; std::unordered_map dpins; }; extern std::unordered_map targets; extern std::unordered_map global_dpins; extern std::unordered_map units; bool accumulate(const std::string& spslr_dir);