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>2023-10-31 15:38:31 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-10-31 15:38:31 +0100
commit362a3fde10a3bb2738fcf30ae2e2eaf4a53df042 (patch)
treeff6233f6cba44c0326cbe366d79fb7a46e1b8d60 /src/elfs/elfloader_private.h
parent5c13f8f10ac82ca642a6c930585989cc0d75a664 (diff)
downloadbox64-362a3fde10a3bb2738fcf30ae2e2eaf4a53df042.tar.gz
box64-362a3fde10a3bb2738fcf30ae2e2eaf4a53df042.zip
[ELFLOADER] Changed how memory is managed in elfloader
Diffstat (limited to 'src/elfs/elfloader_private.h')
-rw-r--r--src/elfs/elfloader_private.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/elfs/elfloader_private.h b/src/elfs/elfloader_private.h
index d2bc2559..b80c87db 100644
--- a/src/elfs/elfloader_private.h
+++ b/src/elfs/elfloader_private.h
@@ -9,7 +9,17 @@ typedef struct kh_defaultversion_s kh_defaultversion_t;
 #include <elf.h>
 #include "elfloader.h"
 
-struct elfheader_s {
+typedef struct multiblock_s {
+    void*       p;
+    uintptr_t   offs;
+    uintptr_t   paddr;
+    uintptr_t   align;
+    uint64_t    size;
+    uint64_t    asize;
+    uint8_t     flags;
+} multiblock_t;
+
+typedef struct elfheader_s {
     char*       name;
     char*       path;   // Resolved path to file
     char*       soname; // soname of the elf
@@ -90,20 +100,21 @@ struct elfheader_s {
     int         malloc_hook_2;  // this elf hook malloc, hacking it
 
     char*       memory;     // char* and not void* to allow math on memory pointer
-    void**      multiblock;
-    uintptr_t*  multiblock_offs;
-    uint64_t*   multiblock_size;
+    multiblock_t*  multiblocks;
     int         multiblock_n;
 
     library_t   *lib;       // attached lib (exept on main elf)
     needed_libs_t* needed;
 
+    FILE*       file;
+    int         fileno;
+
     kh_mapsymbols_t   *mapsymbols;
     kh_mapsymbols_t   *weaksymbols;
     kh_mapsymbols_t   *localsymbols;
     kh_defaultversion_t *globaldefver;  // the global default version for symbols (the XXX@@vvvv of symbols)
     kh_defaultversion_t *weakdefver;    // the weak default version for symbols (the XXX@@vvvv of symbols)
-};
+} elfheader_t;
 
 #define R_X86_64_NONE           0       /* No reloc */
 #define R_X86_64_64             1       /* Direct 64 bit  */