* readelf.c (OPTION_DEBUG_DUMP): Define.
(options): Use it. (usage): Update help. (parse_args): Handle --debug-dump separately from -w. * doc/binutils.texi (readelf): Update documentation.
This commit is contained in:
parent
704afa601f
commit
2979dc3446
@ -1,3 +1,11 @@
|
||||
2002-07-30 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* readelf.c (OPTION_DEBUG_DUMP): Define.
|
||||
(options): Use it.
|
||||
(usage): Update help.
|
||||
(parse_args): Handle --debug-dump separately from -w.
|
||||
* doc/binutils.texi (readelf): Update documentation.
|
||||
|
||||
2002-07-25 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* po/es.po: Updated Spanish translation.
|
||||
|
@ -2864,7 +2864,7 @@ readelf [@option{-a}|@option{--all}]
|
||||
[@option{-V}|@option{--version-info}]
|
||||
[@option{-D}|@option{--use-dynamic}]
|
||||
[@option{-x} <number>|@option{--hex-dump=}<number>]
|
||||
[@option{-w[liaprmfs]}|@option{--debug-dump}[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]]
|
||||
[@option{-w[liaprmfFso]}|@option{--debug-dump}[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]]
|
||||
[@option{-histogram}]
|
||||
[@option{-v}|@option{--version}]
|
||||
[@option{-W}|@option{--wide}]
|
||||
@ -2966,8 +2966,8 @@ symbols section.
|
||||
@itemx --hex-dump=<number>
|
||||
Displays the contents of the indicated section as a hexadecimal dump.
|
||||
|
||||
@item -w[liaprmfs]
|
||||
@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]
|
||||
@item -w[liaprmfFso]
|
||||
@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]
|
||||
Displays the contents of the debug sections in the file, if any are
|
||||
present. If one of the optional letters or words follows the switch
|
||||
then only data found in those specific sections will be dumped.
|
||||
|
@ -2251,6 +2251,8 @@ get_section_type_name (sh_type)
|
||||
}
|
||||
}
|
||||
|
||||
#define OPTION_DEBUG_DUMP 512
|
||||
|
||||
struct option options [] =
|
||||
{
|
||||
{"all", no_argument, 0, 'a'},
|
||||
@ -2270,7 +2272,7 @@ struct option options [] =
|
||||
{"version-info", no_argument, 0, 'V'},
|
||||
{"use-dynamic", no_argument, 0, 'D'},
|
||||
{"hex-dump", required_argument, 0, 'x'},
|
||||
{"debug-dump", optional_argument, 0, 'w'},
|
||||
{"debug-dump", optional_argument, 0, OPTION_DEBUG_DUMP},
|
||||
{"unwind", no_argument, 0, 'u'},
|
||||
#ifdef SUPPORT_DISASSEMBLY
|
||||
{"instruction-dump", required_argument, 0, 'i'},
|
||||
@ -2305,7 +2307,8 @@ usage ()
|
||||
-A --arch-specific Display architecture specific information (if any).\n\
|
||||
-D --use-dynamic Use the dynamic section info when displaying symbols\n\
|
||||
-x --hex-dump=<number> Dump the contents of section <number>\n\
|
||||
-w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n\
|
||||
-w[liaprmfFso] or\n\
|
||||
--debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n\
|
||||
Display the contents of DWARF2 debug sections\n"));
|
||||
#ifdef SUPPORT_DISASSEMBLY
|
||||
fprintf (stdout, _("\
|
||||
@ -2503,6 +2506,88 @@ parse_args (argc, argv)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case OPTION_DEBUG_DUMP:
|
||||
do_dump ++;
|
||||
if (optarg == 0)
|
||||
do_debugging = 1;
|
||||
else
|
||||
{
|
||||
const char *debug_dump_opt[]
|
||||
= { "line", "info", "abbrev", "pubnames", "ranges",
|
||||
"macro", "frames", "frames-interp", "str", "loc", NULL };
|
||||
unsigned int index;
|
||||
const char *p;
|
||||
|
||||
do_debugging = 0;
|
||||
|
||||
p = optarg;
|
||||
while (*p)
|
||||
{
|
||||
for (index = 0; debug_dump_opt[index]; index++)
|
||||
{
|
||||
size_t len = strlen (debug_dump_opt[index]);
|
||||
|
||||
if (strncmp (p, debug_dump_opt[index], len) == 0
|
||||
&& (p[len] == ',' || p[len] == '\0'))
|
||||
{
|
||||
switch (p[0])
|
||||
{
|
||||
case 'i':
|
||||
do_debug_info = 1;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
do_debug_abbrevs = 1;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
if (p[1] == 'i')
|
||||
do_debug_lines = 1;
|
||||
else
|
||||
do_debug_loc = 1;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
do_debug_pubnames = 1;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
do_debug_aranges = 1;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
if (len > 6)
|
||||
do_debug_frames_interp = 1;
|
||||
do_debug_frames = 1;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
do_debug_macinfo = 1;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
do_debug_str = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
p += len;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (debug_dump_opt[index] == NULL)
|
||||
{
|
||||
warn (_("Unrecognized debug option '%s'\n"), p);
|
||||
p = strchr (p, ',');
|
||||
if (p == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (*p == ',')
|
||||
p++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#ifdef SUPPORT_DISASSEMBLY
|
||||
case 'i':
|
||||
do_dump ++;
|
||||
|
Loading…
Reference in New Issue
Block a user