diff options
author | Thinker K.F Li <thinker@branda.to> | 2009-07-03 19:40:32 +0800 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-09-15 17:05:55 -0700 |
commit | 5cf640c926e7d7b79934c97226433a3dc448e1eb (patch) | |
tree | f4346697a0b0028d23b0f021af7da201ddf1660f /linker/linker.c | |
parent | 76ec6891e2bc18c9e12cd2f567358bb817b24cff (diff) | |
download | bionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.zip bionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.tar.gz bionic-5cf640c926e7d7b79934c97226433a3dc448e1eb.tar.bz2 |
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/linker.c')
-rw-r--r-- | linker/linker.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/linker/linker.c b/linker/linker.c index 789a828..27fe9d7 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 |