summaryrefslogtreecommitdiffstats
path: root/linker
diff options
context:
space:
mode:
authorThinker K.F Li <thinker@branda.to>2009-07-03 19:40:32 +0800
committerJean-Baptiste Queru <jbq@google.com>2009-09-15 17:05:55 -0700
commit5cf640c926e7d7b79934c97226433a3dc448e1eb (patch)
treef4346697a0b0028d23b0f021af7da201ddf1660f /linker
parent76ec6891e2bc18c9e12cd2f567358bb817b24cff (diff)
downloadbionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.tar.gz
bionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.tar.bz2
bionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.zip
Fill l_ld of linkmaps with value from soinfo::dynamic.
GDB will try to read l_ld of linkmaps and compare the value to vma of .dynamic sections from shared objects. Since linker does not assign l_ld, GDB will complain about and re-compute l_addr from l_ld. And, GDB will get a wrong value.
Diffstat (limited to 'linker')
-rw-r--r--linker/linker.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/linker/linker.c b/linker/linker.c
index 789a82840..27fe9d772 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -152,6 +152,7 @@ static void insert_soinfo_into_debug_map(soinfo * info)
map = &(info->linkmap);
map->l_addr = info->base;
map->l_name = (char*) info->name;
+ map->l_ld = (uintptr_t)info->dynamic;
/* Stick the new library at the end of the list.
* gdb tends to care more about libc than it does