diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-11-07 17:14:19 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-11-07 17:14:19 +0100 |
| commit | 128708db2d6fe99ba0fe25978316eec4b2088774 (patch) | |
| tree | 0b6792d88777b0fa9415676334eaa32e385a5c9d /src | |
| parent | 3027ee9f3e1ef39b49b8aef17ba0598470eeb282 (diff) | |
| download | box64-128708db2d6fe99ba0fe25978316eec4b2088774.tar.gz box64-128708db2d6fe99ba0fe25978316eec4b2088774.zip | |
[ELFLOADER] Better handling of symbols with COPY / GLOB_DAT (should helps #1412, but doesn't seems to help #1860, wich is strange)
Diffstat (limited to 'src')
| -rw-r--r-- | src/librarian/library.c | 6 |
1 files changed, 6 insertions, 0 deletions
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; |