diff options
author | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-01-18 13:14:19 +0000 |
---|---|---|
committer | Carmelo Amoroso <carmelo.amoroso@st.com> | 2008-01-18 13:14:19 +0000 |
commit | 341b678f45c22cdc60b1312416ad0440aae6685a (patch) | |
tree | e1838c397a8b04951b9d00ef5c0a920813f0c830 /ldso/include | |
parent | 1030faf587a2f4bea255bfd2db28b59e196493aa (diff) |
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 <filippo.arcidiacono@st.com>
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Diffstat (limited to 'ldso/include')
-rw-r--r-- | ldso/include/dl-defs.h | 4 | ||||
-rw-r--r-- | ldso/include/dl-hash.h | 1 |
2 files changed, 3 insertions, 2 deletions
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; |