mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 11:17:44 +00:00
![]() This enables loading executables with multiple data and text segments. Also it fixes loading executables where the text segment has a non-zero offset. Example: $ echo "main () {}" > test.c $ gcc -Wl,-z,separate-code -o test test.c $ objdump -p test test: file format elf32-i386 Program Header: PHDR off 0x00000034 vaddr 0x00000034 paddr 0x00000034 align 2**2 filesz 0x000000e0 memsz 0x000000e0 flags r-- INTERP off 0x00000114 vaddr 0x00000114 paddr 0x00000114 align 2**0 filesz 0x00000013 memsz 0x00000013 flags r-- LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 filesz 0x000003c4 memsz 0x000003c4 flags r-- LOAD off 0x00001000 vaddr 0x00001000 paddr 0x00001000 align 2**12 filesz 0x00000279 memsz 0x00000279 flags r-x LOAD off 0x00002000 vaddr 0x00002000 paddr 0x00002000 align 2**12 filesz 0x00000004 memsz 0x00000004 flags r-- LOAD off 0x00002004 vaddr 0x00003004 paddr 0x00003004 align 2**12 filesz 0x00000100 memsz 0x00000124 flags rw- DYNAMIC off 0x00002014 vaddr 0x00003014 paddr 0x00003014 align 2**2 filesz 0x000000c8 memsz 0x000000c8 flags rw- |
||
---|---|---|
.. | ||
Arch/i386 | ||
AuxiliaryVector.h | ||
CMakeLists.txt | ||
CoreDump.h | ||
DynamicLinker.cpp | ||
DynamicLinker.h | ||
DynamicLoader.cpp | ||
DynamicLoader.h | ||
DynamicObject.cpp | ||
DynamicObject.h | ||
exec_elf.h | ||
Hashes.h | ||
Image.cpp | ||
Image.h | ||
Validation.cpp | ||
Validation.h |