mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 12:25:12 +00:00
![]() As IFUNC resolvers may call arbitrary functions though the PLT, they can only be called after the PLT has been populated. This is true of the `[[gnu::target_clones]]` attribute, which makes a call to `__cpu_indicator_init`, which is defined in `libgcc_s.so`, through the PLT. `do_plt_relocation` and `do_direct_relocation` are given a parameter that controls whether IFUNCs are immediately resolved. In the first pass, relocations pointing to IFUNCs are put on a worklist, while all other relocations are performed. Only after non-IFUNC relocations are done and the PLT is set up do we deal with these. |
||
---|---|---|
.. | ||
Arch | ||
AuxiliaryVector.h | ||
CMakeLists.txt | ||
Core.h | ||
DynamicLinker.cpp | ||
DynamicLinker.h | ||
DynamicLoader.cpp | ||
DynamicLoader.h | ||
DynamicObject.cpp | ||
DynamicObject.h | ||
Hashes.h | ||
Image.cpp | ||
Image.h | ||
Relocation.cpp | ||
Relocation.h | ||
Validation.cpp | ||
Validation.h |