aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/objfiles.h2
-rw-r--r--gdb/solib.c4
3 files changed, 12 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1af7d49..8704d04 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-25 Mathieu Lacage <mathieu.lacage@inria.fr>
+
+ PR/symtab 11766:
+ * gdb/objfiles.h (struct objfile) <addr_low>: New field.
+ * gdb/solib.c (solib_read_symbols): Check for addr_low in
+ equality test for objfile, initialize addr_low if needed.
+
2011-01-25 Pedro Alves <pedro@codesourcery.com>
* tui/tui-regs.c (tui_register_format): Remove dead code.
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index c44517f..759c2f9 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -194,6 +194,8 @@ struct objfile
char *name;
+ CORE_ADDR addr_low;
+
/* Some flag bits for this objfile. */
unsigned short flags;
diff --git a/gdb/solib.c b/gdb/solib.c
index 909a23b..6748d87 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -638,7 +638,8 @@ solib_read_symbols (struct so_list *so, int flags)
/* Have we already loaded this shared object? */
ALL_OBJFILES (so->objfile)
{
- if (strcmp (so->objfile->name, so->so_name) == 0)
+ if (strcmp (so->objfile->name, so->so_name) == 0
+ && so->objfile->addr_low == so->addr_low)
break;
}
if (so->objfile != NULL)
@@ -648,6 +649,7 @@ solib_read_symbols (struct so_list *so, int flags)
so->sections_end);
so->objfile = symbol_file_add_from_bfd (so->abfd,
flags, sap, OBJF_SHARED);
+ so->objfile->addr_low = so->addr_low;
free_section_addr_info (sap);
}