#ifndef PS2RECOMP_ELF_PARSER_H #define PS2RECOMP_ELF_PARSER_H #include "ps2recomp/types.h" #include #include #include #include namespace ps2recomp { class ElfParser { public: ElfParser(const std::string &filePath); ~ElfParser(); bool parse(); std::vector extractFunctions(); std::vector extractSymbols(); std::vector
getSections(); std::vector getRelocations(); // Helper methods bool isValidAddress(uint32_t address) const; uint32_t readWord(uint32_t address) const; uint8_t *getSectionData(const std::string §ionName); uint32_t getSectionAddress(const std::string §ionName); uint32_t getSectionSize(const std::string §ionName); private: std::string m_filePath; std::unique_ptr m_elf; std::vector
m_sections; std::vector m_symbols; std::vector m_relocations; void loadSections(); void loadSymbols(); void loadRelocations(); bool isExecutableSection(const ELFIO::section *section) const; bool isDataSection(const ELFIO::section *section) const; }; } // namespace ps2recomp #endif // PS2RECOMP_ELF_PARSER_H