mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-07 17:15:26 +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:
committed by
Andreas Kling
parent
435a263998
commit
ed5f110b40
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user