public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Match readelf --debug-dump option with documentation and usage
@ 2002-07-25  9:26 Jakub Jelinek
  2002-07-25 21:13 ` Alan Modra
  0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jelinek @ 2002-07-25  9:26 UTC (permalink / raw)
  To: binutils

Hi!

The patch to allow more than one option letter to -w broke
--debug-dump option as documented in the usage and manual page/info.
There it is documented as
--debug-dump (for all debug sections)
--debug-dump=info (for info only)
--debug-dump=str (for debug_str only)
etc.
while current readelf will handle it completely differently.

Here is a patch to fix it, so that
-wlia can be used to display .debug_line, .debug_info and .debug_abbrev
only while
--debug-dump=line,info,abbrev can be used for the same thing.

2002-07-25  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.

--- binutils/readelf.c.jj	Thu Jul 25 16:07:39 2002
+++ binutils/readelf.c	Thu Jul 25 18:22:43 2002
@@ -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,86 @@ 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", "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':
+			      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 ++;
--- binutils/doc/binutils.texi.jj	Thu Jul 25 16:07:39 2002
+++ binutils/doc/binutils.texi	Thu Jul 25 18:31:09 2002
@@ -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.

	Jakub

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Match readelf --debug-dump option with documentation and usage
  2002-07-25  9:26 [PATCH] Match readelf --debug-dump option with documentation and usage Jakub Jelinek
@ 2002-07-25 21:13 ` Alan Modra
  0 siblings, 0 replies; 2+ messages in thread
From: Alan Modra @ 2002-07-25 21:13 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: binutils

On Thu, Jul 25, 2002 at 06:22:47PM +0200, Jakub Jelinek wrote:
> 	* 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.

OK.  If you feel so inclined, you might like to add a "frames_interp"
to match -wF.

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-07-26  0:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-25  9:26 [PATCH] Match readelf --debug-dump option with documentation and usage Jakub Jelinek
2002-07-25 21:13 ` Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).