aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/objfiles.c24
-rw-r--r--gdb/objfiles.h2
-rw-r--r--gdb/symfile.c6
4 files changed, 36 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index dab0eca..f9bcc1b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2009-10-13 Tristan Gingold <gingold@adacore.com>
+
+ * objfiles.c (objfile_has_symbols): New function.
+ * objfiles.h (objfile_has_symbols): Add prototype.
+ * symfile.c (symbol_file_add_with_addrs_or_offsets): Call
+ objfile_has_symbols.
+ (reread_symbols): Ditto.
+
2009-10-12 Jiang Jilin <freephp@gmail.com>
* i386-tdep.c (i386_process_record): Add xgetbv/xsetbv
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 8dcca70..3aabc7c 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -717,6 +717,30 @@ objfile_has_full_symbols (struct objfile *objfile)
return objfile->symtabs != NULL;
}
+/* Return non-zero if OBJFILE has full or partial symbols, either directly
+ or throught its separate debug file. */
+
+int
+objfile_has_symbols (struct objfile *objfile)
+{
+ struct objfile *separate_objfile;
+
+ if (objfile_has_partial_symbols (objfile)
+ || objfile_has_full_symbols (objfile))
+ return 1;
+
+ separate_objfile = objfile->separate_debug_objfile;
+ if (separate_objfile == NULL)
+ return 0;
+
+ if (objfile_has_partial_symbols (separate_objfile)
+ || objfile_has_full_symbols (separate_objfile))
+ return 1;
+
+ return 0;
+}
+
+
/* Many places in gdb want to test just to see if we have any partial
symbols available. This function returns zero if none are currently
available, nonzero otherwise. */
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 62fa498..aff430c 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -476,6 +476,8 @@ extern int objfile_has_partial_symbols (struct objfile *objfile);
extern int objfile_has_full_symbols (struct objfile *objfile);
+extern int objfile_has_symbols (struct objfile *objfile);
+
extern int have_partial_symbols (void);
extern int have_full_symbols (void);
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 2458201..3fd8c6d 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1040,8 +1040,7 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd,
}
if ((from_tty || info_verbose)
- && !objfile_has_partial_symbols (objfile)
- && !objfile_has_full_symbols (objfile))
+ && !objfile_has_symbols (objfile))
{
wrap_here ("");
printf_unfiltered (_("(no debugging symbols found)..."));
@@ -2422,8 +2421,7 @@ reread_symbols (void)
zero is OK since dbxread.c also does what it needs to do if
objfile->global_psymbols.size is 0. */
(*objfile->sf->sym_read) (objfile, 0);
- if (!objfile_has_partial_symbols (objfile)
- && !objfile_has_full_symbols (objfile))
+ if (!objfile_has_symbols (objfile))
{
wrap_here ("");
printf_unfiltered (_("(no debugging symbols found)\n"));