1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:47:44 +00:00

LibELF: Only set up PLT trampoline for objects with a PLT

This commit is contained in:
Andreas Kling 2021-02-05 12:10:45 +01:00
parent 9d471ea923
commit 4df3a34bc2
2 changed files with 6 additions and 3 deletions

View file

@ -219,7 +219,8 @@ RefPtr<DynamicObject> DynamicLoader::load_stage_3(unsigned flags, size_t total_t
{
do_lazy_relocations(total_tls_size);
if (flags & RTLD_LAZY) {
setup_plt_trampoline();
if (m_dynamic_object->has_plt())
setup_plt_trampoline();
}
if (mprotect(m_text_segment_load_address.as_ptr(), m_text_segment_size, PROT_READ | PROT_EXEC) < 0) {
@ -491,6 +492,7 @@ extern "C" void _plt_trampoline(void) __attribute__((visibility("hidden")));
void DynamicLoader::setup_plt_trampoline()
{
ASSERT(m_dynamic_object);
ASSERT(m_dynamic_object->has_plt());
VirtualAddress got_address = m_dynamic_object->plt_got_base_address();
FlatPtr* got_ptr = (FlatPtr*)got_address.as_ptr();