From 128708db2d6fe99ba0fe25978316eec4b2088774 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 7 Nov 2024 17:14:19 +0100 Subject: [ELFLOADER] Better handling of symbols with COPY / GLOB_DAT (should helps #1412, but doesn't seems to help #1860, wich is strange) --- src/librarian/library.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/librarian/library.c b/src/librarian/library.c index a4d4e97f..bf922d60 100644 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -175,6 +175,8 @@ int EmuLib_GetWeak(library_t* lib, const char* name, uintptr_t *offs, uintptr_t void* sym; if((sym = ElfGetWeakSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 1; @@ -213,6 +215,8 @@ int EmuLib_GetGlobal(library_t* lib, const char* name, uintptr_t *offs, uintptr_ void* sym; if((sym = ElfGetGlobalSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 0; @@ -232,6 +236,8 @@ int EmuLib_GetLocal(library_t* lib, const char* name, uintptr_t *offs, uintptr_t void* sym; if((sym = ElfGetLocalSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 0; -- cgit 1.4.1