Commit | Line | Data |
---|---|---|
cf76e892 JPM |
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, | |
c3b14e59 | 15 | ELF_debug_TYPE, |
cf76e892 JPM |
16 | ELF_comment_TYPE, |
17 | ELF_shstrtab_TYPE, | |
18 | ELF_symtab_TYPE, | |
19 | ELF_strtab_TYPE, | |
c3b14e59 JPM |
20 | ELF_debug_abbrev_TYPE, // Abbreviations used in the .debug_info section |
21 | ELF_debug_aranges_TYPE, // Lookup table for mapping addresses to compilation units | |
22 | ELF_debug_frame_TYPE, // Call frame information | |
23 | ELF_debug_info_TYPE, // Core DWARF information section | |
24 | ELF_debug_line_TYPE, // Line number information | |
25 | ELF_debug_loc_TYPE, // Location lists used in the DW_AT_location attributes | |
26 | ELF_debug_macinfo_TYPE, // Macro information | |
27 | ELF_debug_pubnames_TYPE, // Lookup table for mapping object and function names to compilation units | |
28 | ELF_debug_pubtypes_TYPE, // Lookup table for mapping type names to compilation units | |
29 | ELF_debug_ranges_TYPE, // Address ranges used in the DW_AT_ranges attributes | |
30 | ELF_debug_str_TYPE, // String table used in .debug_info | |
31 | ELF_debug_types_TYPE, // Type descriptions | |
cf76e892 JPM |
32 | ELF_END_TYPE |
33 | }ELFSECTIONTYPE; | |
34 | ||
35 | ||
4f945aea | 36 | // Internal manager |
cf76e892 | 37 | extern void ELFManager_Init(void); |
c89f8ff7 | 38 | extern bool ELFManager_DwarfInit(Elf *PtrElfMem, struct stat FileElfInfo); |
cf76e892 JPM |
39 | extern Elf *ELFManager_MemOpen(char *PtrELFExe, size_t Size); |
40 | extern int ELFManager_MemEnd(void); | |
41 | extern void ELFManager_Reset(void); | |
42 | extern void ELFManager_Close(void); | |
43 | extern bool ELFManager_AddTab(void *Ptr, size_t type); | |
cf76e892 | 44 | extern void *ELFManager_ExeCopy(void *src, size_t size); |
4f945aea JPM |
45 | |
46 | // Sections manager | |
cf76e892 | 47 | extern size_t ELFManager_GetSectionType(char *SectionName); |
4f945aea JPM |
48 | |
49 | // Symbols manager | |
cf76e892 | 50 | extern size_t ELFManager_GetAdrFromSymbolName(char *SymbolName); |
4f945aea JPM |
51 | extern char *ELFManager_GetSymbolnameFromAdr(size_t Adr); |
52 | ||
53 | // Functions manager | |
54 | extern char *ELFManager_GetFunctionName(size_t Adr); | |
cf76e892 JPM |
55 | |
56 | ||
57 | #endif // __ELFMANAGER_H__ |