1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 16:57:35 +00:00
serenity/Userland/Libraries/LibELF
Andreas Kling 9206efaabe LibELF: Don't copy read-only data sections
The dynamic loader was mistakenly assuming that there are only two types
of program load headers: text (RX) and data (RW).

Now that we're linking with `-z separate-code`, we will also get some
read-onlydata (R) segments. These can be memory-mapped directly without
making a private per-process copy.

To solve this, the code now instead separates the headers into map/copy
instead of text/data. Writable segments get copied, while non-writable
segments get memory-mapped. :^)
2021-09-01 01:36:18 +02:00
..
Arch CMake: Let Meta/serenity.sh run aarch64 make it past cmake 2021-08-28 14:43:07 +01:00
AuxiliaryVector.h Kernel: Properly set up the userland context for new processes on x86_64 2021-06-28 22:29:28 +02:00
CMakeLists.txt LibELF+LibTest: Fix serenity_install_sources() paths 2021-03-15 09:06:10 +01:00
Core.h Everywhere: Core dump => Coredump 2021-08-23 00:02:09 +02:00
DynamicLinker.cpp LibELF/DynamicLinker: Evaluate symbols in library insertion order (#8802) 2021-07-16 11:55:01 +02:00
DynamicLinker.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
DynamicLoader.cpp LibELF: Don't copy read-only data sections 2021-09-01 01:36:18 +02:00
DynamicLoader.h LibELF: Swap the arguments for negative_offset_from_tls_block_end 2021-07-04 01:07:28 +02:00
DynamicObject.cpp LibELF: Apply some minor optimizations to symbol lookup 2021-08-28 20:03:08 +02:00
DynamicObject.h LibELF+Utilities: Avoid truncating 64-bit values 2021-07-22 08:57:01 +02:00
Hashes.h AK+Userland: Use akaster@serenityos.org for my copyright headers 2021-05-30 14:35:34 +01:00
Image.cpp LibELF+Utilities: Avoid truncating 64-bit values 2021-07-22 08:57:01 +02:00
Image.h LibELF+Utilities: Avoid truncating 64-bit values 2021-07-22 08:57:01 +02:00
Relocation.cpp LibELF: Fix unaligned writes in the relocation code 2021-07-27 13:15:16 +02:00
Relocation.h DynamicLoader+LibELF: Move self-relocation code into a separate file 2021-07-27 13:15:16 +02:00
Validation.cpp LibELF: Allow (but ignore) PT_LOAD headers with zero size 2021-08-31 16:46:16 +02:00
Validation.h Kernel+LibELF: Add support for validating and loading ELF64 executables 2021-06-28 22:29:28 +02:00