diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-08-17 12:24:26 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-08-17 12:24:26 +0200 |
| commit | fa87b0fcef3dff593a507b3200ef83d846101d64 (patch) | |
| tree | 66894b342323cf40892b43d6f92bc8793c792489 /src/elfs/elfloader_private.h | |
| parent | 0f1bce0f32a8429fc414f92cb6b85ff0d30b5d8f (diff) | |
| download | box64-fa87b0fcef3dff593a507b3200ef83d846101d64.tar.gz box64-fa87b0fcef3dff593a507b3200ef83d846101d64.zip | |
[BOX32] prepare elfheader_t structure for 32bits elfs
Diffstat (limited to 'src/elfs/elfloader_private.h')
| -rw-r--r-- | src/elfs/elfloader_private.h | 54 |
1 files changed, 36 insertions, 18 deletions
diff --git a/src/elfs/elfloader_private.h b/src/elfs/elfloader_private.h index 93750f49..d881149a 100644 --- a/src/elfs/elfloader_private.h +++ b/src/elfs/elfloader_private.h @@ -7,6 +7,7 @@ typedef struct cleanup_s cleanup_t; #include <elf.h> #include "elfloader.h" +#include "box32.h" typedef struct multiblock_s { void* p; @@ -22,27 +23,48 @@ typedef struct elfheader_s { char* name; char* path; // Resolved path to file char* soname; // soname of the elf - size_t numPHEntries; - Elf64_Phdr *PHEntries; - size_t numSHEntries; - Elf64_Shdr *SHEntries; + uint16_t numPHEntries; + union { + Elf64_Phdr* _64; + Elf32_Phdr* _32; + } PHEntries; + uint16_t numSHEntries; + union { + Elf64_Shdr* _64; + Elf32_Shdr* _32; + } SHEntries; size_t SHIdx; size_t numSST; char* SHStrTab; char* StrTab; - Elf64_Sym* SymTab; + union { + Elf64_Sym* _64; + Elf32_Sym* _32; + } SymTab; size_t numSymTab; char* DynStr; - Elf64_Sym* DynSym; + union { + Elf64_Sym* _64; + Elf32_Sym* _32; + } DynSym; size_t numDynSym; - Elf64_Dyn* Dynamic; + union { + Elf64_Dyn* _64; + Elf32_Dyn* _32; + } Dynamic; size_t numDynamic; char* DynStrTab; size_t szDynStrTab; - Elf64_Half* VerSym; - Elf64_Verneed* VerNeed; + uint16_t* VerSym; + union { + Elf64_Verneed* _64; + Elf32_Verneed* _32; + } VerNeed; int szVerNeed; - Elf64_Verdef* VerDef; + union { + Elf64_Verdef* _64; + Elf32_Verdef* _32; + } VerDef; int szVerDef; int e_type; uint32_t flags; @@ -178,19 +200,15 @@ typedef struct elfheader_s { elfheader_t* ParseElfHeader64(FILE* f, const char* name, int exec); -const char* BindSym64(int bind); +const char* BindSym(int bind); Elf64_Half GetSymbolVersionFlag(elfheader_t* h, int index); uint32_t old_elf_hash(const char* name); -Elf64_Sym* old_elf_lookup(elfheader_t* h, const char* symname, int ver, const char* vername, int local, int veropt); -void old_elf_hash_dump(elfheader_t* h); uint32_t new_elf_hash(const char *name); -Elf64_Sym* new_elf_lookup(elfheader_t* h, const char* symname, int ver, const char* vername, int local, int veropt); -void new_elf_hash_dump(elfheader_t* h); -Elf64_Sym* ElfLookup(elfheader_t* h, const char* symname, int ver, const char* vername, int local, int veropt); -Elf64_Sym* ElfSymTabLookup(elfheader_t* h, const char* symname); -Elf64_Sym* ElfDynSymLookup(elfheader_t* h, const char* symname); +Elf64_Sym* ElfLookup64(elfheader_t* h, const char* symname, int ver, const char* vername, int local, int veropt); +Elf64_Sym* ElfSymTabLookup64(elfheader_t* h, const char* symname); +Elf64_Sym* ElfDynSymLookup64(elfheader_t* h, const char* symname); #endif //__ELFLOADER_PRIVATE_H_ |