]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 25 Apr 2011 21:25:18 +0000 (21:25 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 25 Apr 2011 21:25:18 +0000 (21:25 +0000)
* elfread.c (elf_symfile_read): Protect dwarf2_initialize_objfile by
!objfile_has_partial_symbols.  New comment.
* objfiles.c (objfile_has_partial_symbols): Call HAS_SYMBOLS if
SYM_READ_PSYMBOLS is not present. Extend the comment.
* symfile.h (struct sym_fns): Extend the sym_read_psymbols comment.

gdb/testsuite/
* gdb.base/gdbindex-stabs-dwarf.c: New file.
* gdb.base/gdbindex-stabs.c: New file.
* gdb.base/gdbindex-stabs.exp: New file.

gdb/ChangeLog
gdb/elfread.c
gdb/objfiles.c
gdb/symfile.h
gdb/testsuite/ChangeLog

index 12c280b355d2157681afef117217d86add933a24..ebdd64f6acc5ebdcc3aa4805a6fe958d30893a94 100644 (file)
@@ -1,3 +1,11 @@
+2011-04-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * elfread.c (elf_symfile_read): Protect dwarf2_initialize_objfile by
+       !objfile_has_partial_symbols.  New comment.
+       * objfiles.c (objfile_has_partial_symbols): Call HAS_SYMBOLS if
+       SYM_READ_PSYMBOLS is not present. Extend the comment.
+       * symfile.h (struct sym_fns): Extend the sym_read_psymbols comment.
+
 2011-04-21  Pierre Muller  <muller@ics.u-strasbg.fr>
 
        * gdb_wchar.h (USE_INTERMEDIATE_ENCODING_FUNCTION): New macro.
index b9cfa136fe4e4945f78a9e43e3aefacc66c11408..29081c4f986f865c1adfa026172978e1341a317a 100644 (file)
@@ -1375,7 +1375,12 @@ elf_symfile_read (struct objfile *objfile, int symfile_flags)
 
   if (dwarf2_has_info (objfile))
     {
-      if (dwarf2_initialize_objfile (objfile))
+      /* elf_sym_fns_gdb_index cannot handle simultaneous non-DWARF debug
+        information present in OBJFILE.  If there is such debug info present
+        never use .gdb_index.  */
+
+      if (!objfile_has_partial_symbols (objfile)
+         && dwarf2_initialize_objfile (objfile))
        objfile->sf = &elf_sym_fns_gdb_index;
       else
        {
index f3259dd6b02b213a0035cf7cd731575e57aefaba..7b0c450ccb219144293217b6196cefa98a44859e 100644 (file)
@@ -909,11 +909,15 @@ objfile_has_partial_symbols (struct objfile *objfile)
 {
   if (!objfile->sf)
     return 0;
-  /* If we have not read psymbols, but we have a function capable of
-     reading them, then that is an indication that they are in fact
-     available.  */
-  if ((objfile->flags & OBJF_PSYMTABS_READ) == 0)
-    return objfile->sf->sym_read_psymbols != NULL;
+
+  /* If we have not read psymbols, but we have a function capable of reading
+     them, then that is an indication that they are in fact available.  Without
+     this function the symbols may have been already read in but they also may
+     not be present in this objfile.  */
+  if ((objfile->flags & OBJF_PSYMTABS_READ) == 0
+      && objfile->sf->sym_read_psymbols != NULL)
+    return 1;
+
   return objfile->sf->qf->has_symbols (objfile);
 }
 
index 19e3fd5cbf04ef829682457bc73f25e56524d679..dad032031bb0f0c2d62a76dcd1dfd024ce1b3421 100644 (file)
@@ -320,10 +320,10 @@ struct sym_fns
 
   void (*sym_read) (struct objfile *, int);
 
-  /* Read the partial symbols for an objfile.  This may be NULL, in
-     which case gdb assumes that sym_read already read the partial
-     symbols.  This may only be non-NULL if the objfile actually does
-     have debuginfo available.  */
+  /* Read the partial symbols for an objfile.  This may be NULL, in which case
+     gdb has to check other ways if this objfile has any symbols.  This may
+     only be non-NULL if the objfile actually does have debuginfo available.
+     */
 
   void (*sym_read_psymbols) (struct objfile *);
 
index c0911007cd61c542439462fd972de68850a02223..32615f6b6fdbec4e645a899867c49f485e6bed4a 100644 (file)
@@ -1,3 +1,9 @@
+2011-04-25  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * gdb.base/gdbindex-stabs-dwarf.c: New file.
+       * gdb.base/gdbindex-stabs.c: New file.
+       * gdb.base/gdbindex-stabs.exp: New file.
+
 2011-04-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * gdb.cp/cpcompletion.exp (complete class methods)