mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 17:58:12 +00:00
LibELF: Perform .relr.dyn relocations before .rel.dyn
IFUNC resolvers depend on the resolved function's address having been relocated by the time they are called. This means that relative relocations have to be done first. The linker is kind enough to put R_*_RELATIVE before R_*_IRELATIVE in .rel.dyn, but .relr.dyn contains relative relocations too.
This commit is contained in:
parent
435a263998
commit
ed5f110b40
1 changed files with 1 additions and 1 deletions
|
@ -197,9 +197,9 @@ void DynamicLoader::do_main_relocations()
|
|||
}
|
||||
};
|
||||
|
||||
do_relr_relocations();
|
||||
m_dynamic_object->relocation_section().for_each_relocation(do_single_relocation);
|
||||
m_dynamic_object->plt_relocation_section().for_each_relocation(do_single_relocation);
|
||||
do_relr_relocations();
|
||||
}
|
||||
|
||||
Result<NonnullRefPtr<DynamicObject>, DlErrorMessage> DynamicLoader::load_stage_3(unsigned flags)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue