PR binutils/6483

* objdump.c (dump_bfd): If the -g option found no STABS or IEEE
        debug information to display, try dumping DWARF information
        instead.
        * rddbg.c (read_debugging_info): Add a parameter to suppress the
        display of a warning message when no debug information is found.
        * budbg.h (read_debugging_info): Update prototype.
        * objcopy.c (copy_object): Continue to allow read_debugging_info
        to produce warning messages.
        * doc/binutils.texi (--debugging): Document new behaviour of the
        -g/--debugging option.
This commit is contained in:
Nick Clifton
2008-06-12 11:57:40 +00:00
parent 5590fba953
commit b922d5904f
6 changed files with 34 additions and 13 deletions

View File

@ -1,3 +1,17 @@
2008-06-12 Nick Clifton <nickc@redhat.com>
PR binutils/6483
* objdump.c (dump_bfd): If the -g option found no STABS or IEEE
debug information to display, try dumping DWARF information
instead.
* rddbg.c (read_debugging_info): Add a parameter to suppress the
display of a warning message when no debug information is found.
* budbg.h (read_debugging_info): Update prototype.
* objcopy.c (copy_object): Continue to allow read_debugging_info
to produce warning messages.
* doc/binutils.texi (--debugging): Document new behaviour of the
-g/--debugging option.
2008-06-10 Ben Elliston <bje@gnu.org> 2008-06-10 Ben Elliston <bje@gnu.org>
* MAINTAINERS: Remove myself as m68k maintainer. * MAINTAINERS: Remove myself as m68k maintainer.

View File

@ -1,5 +1,5 @@
/* budbg.c -- Interfaces to the generic debugging information routines. /* budbg.c -- Interfaces to the generic debugging information routines.
Copyright 1995, 1996, 2002, 2003, 2007 Free Software Foundation, Inc. Copyright 1995, 1996, 2002, 2003, 2007, 2008 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>. Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils. This file is part of GNU Binutils.
@ -26,7 +26,7 @@
/* Routine used to read generic debugging information. */ /* Routine used to read generic debugging information. */
extern void *read_debugging_info (bfd *, asymbol **, long); extern void *read_debugging_info (bfd *, asymbol **, long, bfd_boolean);
/* Routine used to print generic debugging information. */ /* Routine used to print generic debugging information. */

View File

@ -1693,11 +1693,11 @@ for more information on demangling.
@item -g @item -g
@itemx --debugging @itemx --debugging
Display debugging information. This attempts to parse debugging Display debugging information. This attempts to parse STABS and IEEE
information stored in the file and print it out using a C like syntax. debugging format information stored in the file and print it out using
Only certain types of debugging information have been implemented. a C like syntax. If neither of these formats are found this option
Some other types are supported by @command{readelf -w}. falls back on the @option{-W} option to print any DWARF information in
@xref{readelf}. the file.
@item -e @item -e
@itemx --debugging-tags @itemx --debugging-tags

View File

@ -1674,7 +1674,7 @@ copy_object (bfd *ibfd, bfd *obfd)
have been created, but before their contents are set. */ have been created, but before their contents are set. */
dhandle = NULL; dhandle = NULL;
if (convert_debugging) if (convert_debugging)
dhandle = read_debugging_info (ibfd, isympp, symcount); dhandle = read_debugging_info (ibfd, isympp, symcount, FALSE);
if (strip_symbols == STRIP_DEBUG if (strip_symbols == STRIP_DEBUG
|| strip_symbols == STRIP_ALL || strip_symbols == STRIP_ALL

View File

@ -2937,7 +2937,7 @@ dump_bfd (bfd *abfd)
{ {
void *dhandle; void *dhandle;
dhandle = read_debugging_info (abfd, syms, symcount); dhandle = read_debugging_info (abfd, syms, symcount, TRUE);
if (dhandle != NULL) if (dhandle != NULL)
{ {
if (!print_debugging_info (stdout, dhandle, abfd, syms, if (!print_debugging_info (stdout, dhandle, abfd, syms,
@ -2949,6 +2949,12 @@ dump_bfd (bfd *abfd)
exit_status = 1; exit_status = 1;
} }
} }
/* PR 6483: If there was no STABS or IEEE debug
info in the file, try DWARF instead. */
else if (! dump_dwarf_section_info)
{
dump_dwarf (abfd);
}
} }
if (syms) if (syms)

View File

@ -1,5 +1,5 @@
/* rddbg.c -- Read debugging information into a generic form. /* rddbg.c -- Read debugging information into a generic form.
Copyright 1995, 1996, 1997, 2000, 2002, 2003, 2005, 2007 Copyright 1995, 1996, 1997, 2000, 2002, 2003, 2005, 2007, 2008
Free Software Foundation, Inc. Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>. Written by Ian Lance Taylor <ian@cygnus.com>.
@ -45,7 +45,7 @@ static void free_saved_stabs (void);
pointer. */ pointer. */
void * void *
read_debugging_info (bfd *abfd, asymbol **syms, long symcount) read_debugging_info (bfd *abfd, asymbol **syms, long symcount, bfd_boolean no_messages)
{ {
void *dhandle; void *dhandle;
bfd_boolean found; bfd_boolean found;
@ -84,8 +84,9 @@ read_debugging_info (bfd *abfd, asymbol **syms, long symcount)
if (! found) if (! found)
{ {
non_fatal (_("%s: no recognized debugging information"), if (! no_messages)
bfd_get_filename (abfd)); non_fatal (_("%s: no recognized debugging information"),
bfd_get_filename (abfd));
return NULL; return NULL;
} }