2009-02-09 Tristan Gingold <gingold@adacore.com>

* NEWS: Mention feature match between objdump and readelf for dumping
	dwarf info.

	* doc/binutils.texi (objdump): Document -W/--dwarf improvments to
	objdump.

	* objdump.c (usage): Update documentation for -W/--dwarf.
	(enum option_values): Add OPTION_DWARF.
	(long_options): --dwarf can accept arguments.
	(dump_dwarf_section): Also check enabled field.
	(main): Option -W can accept arguments, code moved to
	dwarf.c and call dwarf_select_sections_all instead.
	* readelf.c (process_section_headers): Remove do_debug_lines_decoded.
	(parse_args): Move code to...
	* dwarf.c (dwarf_select_sections_by_letters,
	dwarf_select_sections_by_names): : ...here (new functions).
	(do_debug_lines_decoded): Remove and replaced by ...
	(FLAG_DEBUG_LINES_RAW, FLAG_DEBUG_LINES_DECODED): ... new macros.
	(display_debug_lines): Adjust for previous change.
	(dwarf_select_sections_all): New function.
	(debug_displays): Add initializer for enabled field.
	* dwarf.h (do_debug_lines_decoded): Remove.
	Add prototypes for the new functions.
	(struct dwarf_section_display): Add enabled field.
This commit is contained in:
Tristan Gingold 2009-02-09 09:14:15 +00:00
parent 5734ee8bab
commit 4cb93e3bbe
7 changed files with 247 additions and 172 deletions

View file

@ -199,7 +199,9 @@ usage (FILE *stream, int status)
-g, --debugging Display debug information in object file\n\
-e, --debugging-tags Display debug information using ctags style\n\
-G, --stabs Display (in raw form) any STABS info in the file\n\
-W, --dwarf Display DWARF info in the file\n\
-W[lLiaprmfFsoR] or\n\
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n\
Display DWARF info in the file\n\
-t, --syms Display the contents of the symbol table(s)\n\
-T, --dynamic-syms Display the contents of the dynamic symbol table\n\
-r, --reloc Display the relocation entries in the file\n\
@ -254,6 +256,7 @@ enum option_values
OPTION_ENDIAN=150,
OPTION_START_ADDRESS,
OPTION_STOP_ADDRESS,
OPTION_DWARF,
OPTION_PREFIX,
OPTION_PREFIX_STRIP,
OPTION_ADJUST_VMA
@ -293,7 +296,7 @@ static struct option long_options[]=
{"source", no_argument, NULL, 'S'},
{"special-syms", no_argument, &dump_special_syms, 1},
{"include", required_argument, NULL, 'I'},
{"dwarf", no_argument, NULL, 'W'},
{"dwarf", optional_argument, NULL, OPTION_DWARF},
{"stabs", no_argument, NULL, 'G'},
{"start-address", required_argument, NULL, OPTION_START_ADDRESS},
{"stop-address", required_argument, NULL, OPTION_STOP_ADDRESS},
@ -2210,8 +2213,10 @@ dump_dwarf_section (bfd *abfd, asection *section,
match = name;
for (i = 0; i < max; i++)
if (strcmp (debug_displays [i].section.uncompressed_name, match) == 0
|| strcmp (debug_displays [i].section.compressed_name, match) == 0)
if ((strcmp (debug_displays [i].section.uncompressed_name, match) == 0
|| strcmp (debug_displays [i].section.compressed_name, match) == 0)
&& debug_displays [i].enabled != NULL
&& *debug_displays [i].enabled)
{
if (!debug_displays [i].eh_frame)
{
@ -3148,7 +3153,8 @@ main (int argc, char **argv)
bfd_init ();
set_default_bfd_target ();
while ((c = getopt_long (argc, argv, "pib:m:M:VvCdDlfFaHhrRtTxsSI:j:wE:zgeGW",
while ((c = getopt_long (argc, argv,
"pib:m:M:VvCdDlfFaHhrRtTxsSI:j:wE:zgeGW::",
long_options, (int *) 0))
!= EOF)
{
@ -3311,16 +3317,18 @@ main (int argc, char **argv)
case 'W':
dump_dwarf_section_info = TRUE;
seenflag = TRUE;
do_debug_info = 1;
do_debug_abbrevs = 1;
do_debug_lines = 1;
do_debug_pubnames = 1;
do_debug_aranges = 1;
do_debug_ranges = 1;
do_debug_frames = 1;
do_debug_macinfo = 1;
do_debug_str = 1;
do_debug_loc = 1;
if (optarg)
dwarf_select_sections_by_letters (optarg);
else
dwarf_select_sections_all ();
break;
case OPTION_DWARF:
dump_dwarf_section_info = TRUE;
seenflag = TRUE;
if (optarg)
dwarf_select_sections_by_names (optarg);
else
dwarf_select_sections_all ();
break;
case 'G':
dump_stab_section_info = TRUE;