From 341b678f45c22cdc60b1312416ad0440aae6685a Mon Sep 17 00:00:00 2001 From: Carmelo Amoroso Date: Fri, 18 Jan 2008 13:14:19 +0000 Subject: This patch solves a problem in dladdr caused by the wrong value of elf_resolve's loadaddr field for the main application. Signed-off-by: Filippo Arcidiacono Signed-off-by: Carmelo Amoroso --- ldso/include/dl-defs.h | 4 ++-- ldso/include/dl-hash.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'ldso/include') diff --git a/ldso/include/dl-defs.h b/ldso/include/dl-defs.h index 21b9c28f0..791d068bb 100644 --- a/ldso/include/dl-defs.h +++ b/ldso/include/dl-defs.h @@ -168,8 +168,8 @@ typedef struct { */ #ifndef DL_ADDR_IN_LOADADDR # define DL_ADDR_IN_LOADADDR(ADDR, TPNT, TFROM) \ - ((void*)(TPNT)->loadaddr < (void*)(ADDR) \ - && (!(TFROM) || (TFROM)->loadaddr < (TPNT)->loadaddr)) + ((void*)(TPNT)->mapaddr < (void*)(ADDR) \ + && (!(TFROM) || (TFROM)->mapaddr < (TPNT)->mapaddr)) #endif /* This is called from dladdr() to give targets that use function descriptors diff --git a/ldso/include/dl-hash.h b/ldso/include/dl-hash.h index 5bb1f47e1..193ae2d59 100644 --- a/ldso/include/dl-hash.h +++ b/ldso/include/dl-hash.h @@ -34,6 +34,7 @@ struct elf_resolve { struct elf_resolve * next; struct elf_resolve * prev; /* Nothing after this address is used by gdb. */ + DL_LOADADDR_TYPE mapaddr; /* Address at which ELF segments (either main app and DSO) are mapped into */ enum {elf_lib, elf_executable,program_interpreter, loaded_file} libtype; struct dyn_elf * symbol_scope; unsigned short usage_count; -- cgit v1.2.3