| 1 | |
| 2 | |
| 3 | #ifndef __ELFMANAGER_H__ |
| 4 | #define __ELFMANAGER_H__ |
| 5 | |
| 6 | |
| 7 | typedef enum { |
| 8 | ELF_NO_TYPE = -1, |
| 9 | ELF_NULL_TYPE = 0, |
| 10 | ELF_text_TYPE, |
| 11 | ELF_rodata_TYPE, |
| 12 | ELF_data_TYPE, |
| 13 | ELF_bss_TYPE, |
| 14 | ELF_heap_TYPE, |
| 15 | ELF_debug_aranges_TYPE, |
| 16 | ELF_debug_info_TYPE, |
| 17 | ELF_debug_abbrev_TYPE, |
| 18 | ELF_debug_line_TYPE, |
| 19 | ELF_debug_frame_TYPE, |
| 20 | ELF_debug_str_TYPE, |
| 21 | ELF_debug_loc_TYPE, |
| 22 | ELF_debug_ranges_TYPE, |
| 23 | ELF_comment_TYPE, |
| 24 | ELF_shstrtab_TYPE, |
| 25 | ELF_symtab_TYPE, |
| 26 | ELF_strtab_TYPE, |
| 27 | ELF_END_TYPE |
| 28 | }ELFSECTIONTYPE; |
| 29 | |
| 30 | |
| 31 | // Internal manager |
| 32 | extern void ELFManager_Init(void); |
| 33 | extern bool ELFManager_DwarfInit(Elf *PtrElfMem); |
| 34 | extern Elf *ELFManager_MemOpen(char *PtrELFExe, size_t Size); |
| 35 | extern int ELFManager_MemEnd(void); |
| 36 | extern void ELFManager_Reset(void); |
| 37 | extern void ELFManager_Close(void); |
| 38 | extern bool ELFManager_AddTab(void *Ptr, size_t type); |
| 39 | extern void *ELFManager_ExeCopy(void *src, size_t size); |
| 40 | |
| 41 | // Sections manager |
| 42 | extern size_t ELFManager_GetSectionType(char *SectionName); |
| 43 | |
| 44 | // Symbols manager |
| 45 | extern size_t ELFManager_GetAdrFromSymbolName(char *SymbolName); |
| 46 | extern char *ELFManager_GetSymbolnameFromAdr(size_t Adr); |
| 47 | |
| 48 | // Functions manager |
| 49 | extern char *ELFManager_GetFunctionName(size_t Adr); |
| 50 | |
| 51 | |
| 52 | #endif // __ELFMANAGER_H__ |