about summary refs log tree commit diff stats
path: root/src/elfs/elfloader_private.h
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-08-17 12:24:26 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-08-17 12:24:26 +0200
commitfa87b0fcef3dff593a507b3200ef83d846101d64 (patch)
tree66894b342323cf40892b43d6f92bc8793c792489 /src/elfs/elfloader_private.h
parent0f1bce0f32a8429fc414f92cb6b85ff0d30b5d8f (diff)
downloadbox64-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.h54
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_