f4cb631364
There are number of changes in the way IFUNC related relocations are done:
1. IRELATIVE relocations are now supported for x86/x86_64 and arm64.
2. IFUNC relocations are now relying on static linker to generate
them in correct order - this removes necessety of additional
relocation pass for ifuncs.
3. Related to 2: rela?.dyn relocations are preformed before .plt ones.
4. Ifunc are resolved on symbol lookup this approach allowed to avoid
mprotect(PROT_WRITE) call on r-x program segments.
Bug: 17399706
Bug: 17177284
(cherry picked from commit
|
||
---|---|---|
.. | ||
Android.mk | ||
atexit_testlib.cpp | ||
dlext_test_library.cpp | ||
dlopen_testlib_answer.cpp | ||
dlopen_testlib_ifunc.c | ||
dlopen_testlib_relo_check_dt_needed_order.cpp | ||
dlopen_testlib_relo_check_dt_needed_order_1.cpp | ||
dlopen_testlib_relo_check_dt_needed_order_2.cpp | ||
dlopen_testlib_simple.cpp | ||
dlsym_weak_function.cpp | ||
empty.cpp |