1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:38:11 +00:00
serenity/Userland/Libraries/LibELF
Daniel Bertalan 08c459e495 LibELF: Add support for IFUNCs
IFUNC is a GNU extension to the ELF standard that allows a function to
have multiple implementations. A resolver function has to be called at
load time to choose the right one to use. The PLT will contain the entry
to the resolved function, so branching and more indirect jumps can be
avoided at run-time.

This mechanism is usually used when a routine can be made faster using
CPU features that are available in only some models, and a fallback
implementation has to exist for others.

We will use this feature to have two separate memset implementations for
CPUs with and without ERMS (Enhanced REP MOVSB/STOSB) support.
2022-05-01 12:42:01 +02:00
..
Arch LibELF: Store SSE registers in x86_64 PLT Trampoline 2021-10-31 00:21:31 +02:00
AuxiliaryVector.h Kernel+LibELF+LibVT: Remove unused AK::String header includes 2022-02-16 22:21:37 +01:00
CMakeLists.txt LibELF+LibTest: Fix serenity_install_sources() paths 2021-03-15 09:06:10 +01:00
Core.h LibELF: Exclude MemoryRegionInfo::object_name() from the Kernel 2022-02-16 22:21:37 +01:00
DynamicLinker.cpp LibELF: Add support for IFUNCs 2022-05-01 12:42:01 +02:00
DynamicLinker.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
DynamicLoader.cpp LibELF: Add support for IFUNCs 2022-05-01 12:42:01 +02:00
DynamicLoader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
DynamicObject.cpp LibELF: Add support for IFUNCs 2022-05-01 12:42:01 +02:00
DynamicObject.h LibELF: Add support for IFUNCs 2022-05-01 12:42:01 +02:00
Hashes.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Image.cpp LibELF: Add support for IFUNCs 2022-05-01 12:42:01 +02:00
Image.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Relocation.cpp LibELF: Implement support for DT_RELR relative relocations 2022-02-11 18:07:53 +01:00
Relocation.h Kernel+LibELF+LibVT: Remove unused AK::String header includes 2022-02-16 22:21:37 +01:00
Validation.cpp LibELF: Relax restriction on allowed values of EI_OSABI to allow GNU 2022-05-01 12:42:01 +02:00
Validation.h LibELF: Remove unused m_program_interpreter member from DynamicLoader 2022-03-31 10:18:07 +02:00