summaryrefslogtreecommitdiff
path: root/ldso/include
diff options
context:
space:
mode:
authorCarmelo Amoroso <carmelo.amoroso@st.com>2008-01-18 13:14:19 +0000
committerCarmelo Amoroso <carmelo.amoroso@st.com>2008-01-18 13:14:19 +0000
commit341b678f45c22cdc60b1312416ad0440aae6685a (patch)
treee1838c397a8b04951b9d00ef5c0a920813f0c830 /ldso/include
parent1030faf587a2f4bea255bfd2db28b59e196493aa (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.h4
-rw-r--r--ldso/include/dl-hash.h1
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;