2011-01-25 Mathieu Lacage <mathieu.lacage@inria.fr>
authorThiago Jung Bauermann <bauerman@br.ibm.com>
Wed, 26 Jan 2011 01:55:19 +0000 (01:55 +0000)
committerThiago Jung Bauermann <bauerman@br.ibm.com>
Wed, 26 Jan 2011 01:55:19 +0000 (01:55 +0000)
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.

gdb/ChangeLog
gdb/objfiles.h
gdb/solib.c

index 1af7d49..8704d04 100644 (file)
@@ -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.
index c44517f..759c2f9 100644 (file)
@@ -194,6 +194,8 @@ struct objfile
 
     char *name;
 
+    CORE_ADDR addr_low;
+
     /* Some flag bits for this objfile.  */
 
     unsigned short flags;
index 909a23b..6748d87 100644 (file)
@@ -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);
        }