This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA, doc RFA] New option set use-deprecated-index-sections


Jan Kratochvil writes:
 > On Tue, 17 Jul 2012 23:23:51 +0200, dje@google.com wrote:
 > > I was going to wait to apply this until after 7.5,
 > > but with the new "-iex" option I realize that the new
 > > "--use-deprecated-index-sections" option could be considered redundant.
 > > So I'm thinking about deleting that as well, in favor of having just this.
 > 
 > I would find less GDB options to be good.
 > 
 > 
 > > +@item set use-deprecated-index-sections
 > > +@kindex set use-deprecated-index-sections
 > > +Set this option to control the treatment of deprecated index sections.
 > > +When @code{on}, index sections are used even if they are deprecated.
 > 
 > > +When @code{off}, only current versions of index sections are used.
 > > +The default is @code{off}.
 > 
 > This is not completely correct:
 >   if (version < 6 && !use_deprecated_index_sections)
 >   if (version > 7)
 > 
 > So version 6 is not "current" but it is still used even without
 > -use-deprecated-index-sections.  At least gdb doc should be exact IMO.
 > 
 > It is also questionable if version 6 should be ignored without
 > -use-deprecated-index-sections.   I guess the possible performance regression
 > (against non-index case) is so rare it was not worth ignoring version 6.

How about this? (for cvs head and the 7.5 branch)
[This patch needs a slight tweak to apply cleanly to the branch.
I'll make the tweak after checking this into head.]

P.S. Eli, I need a doc RFA here too.  Thanks.

2012-07-18  Doug Evans  <dje@google.com>

	* NEWS: Document new options "set/show use-deprecated-index-sections",
	and delete reference to --use-deprecated-index-sections.
	* symfile.h (use_deprecated_index_sections): Delete.
	* dwarf2read.c (use_deprecated_index_sections): Make static.
	(read_index_from_section): Update wording of how to load
	deprecated index sections.
	(_initialize_dwarf2_read): New options
	"set/show use-deprecated-index-sections".
	* main.c (captured_main): Delete --use-deprecated-index-sections.

	doc/
	* gdb.texinfo (Mode Options): Delete --use-deprecated-index-sections.
	(Index Files): Document how to control the use of deprecated index
	sections.
	(Index Section Format): Replace --use-deprecated-index-sections with
	"set use-deprecated-index-sections on".

Index: NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.534
diff -u -p -r1.534 NEWS
--- NEWS	18 Jul 2012 04:02:10 -0000	1.534
+++ NEWS	18 Jul 2012 22:21:17 -0000
@@ -114,11 +114,13 @@
 * The .gdb_index section has been updated to include symbols for
   inlined functions.  GDB will ignore older .gdb_index sections by
   default, which could cause symbol files to be loaded more slowly
-  until their .gdb_index sections can be recreated.  The new option
-  --use-deprecated-index-sections will cause GDB to use any older
-  .gdb_index sections it finds.  This will restore performance, but
-  the ability to set breakpoints on inlined functions will be lost
-  in symbol files with older .gdb_index sections.
+  until their .gdb_index sections can be recreated.  The new command
+  "set use-deprecated-index-sections on" will cause GDB to use any older
+  .gdb_index sections it finds.  To control this from the command line
+  use "-iex 'set use-deprecated-index-sections on'".
+  This will restore performance, but the ability to set breakpoints on
+  inlined functions will be lost in symbol files with older .gdb_index
+  sections.
 
   The .gdb_index section has also been updated to record more information
   about each symbol.  This speeds up the "info variables", "info functions"
@@ -139,6 +141,10 @@
 
 * New commands
 
+  ** "set use-deprecated-index-sections on|off"
+     "show use-deprecated-index-sections on|off"
+     Controls the use of deprecated .gdb_index sections.
+
   ** "catch load" and "catch unload" can be used to stop when a shared
      library is loaded or unloaded, respectively.
 
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.693
diff -u -p -r1.693 dwarf2read.c
--- dwarf2read.c	18 Jul 2012 20:01:27 -0000	1.693
+++ dwarf2read.c	18 Jul 2012 22:21:18 -0000
@@ -85,7 +85,7 @@ static int dwarf2_die_debug = 0;
 static int check_physname = 0;
 
 /* When non-zero, do not reject deprecated .gdb_index sections.  */
-int use_deprecated_index_sections = 0;
+static int use_deprecated_index_sections = 0;
 
 /* When set, the file that we're processing is known to have debugging
    info for C++ namespaces.  GCC 3.3.x did not produce this information,
@@ -2611,15 +2611,18 @@ read_index_from_section (struct objfile 
      Versions earlier than 6 did not emit psymbols for inlined
      functions.  Using these files will cause GDB not to be able to
      set breakpoints on inlined functions by name, so we ignore these
-     indices unless the --use-deprecated-index-sections command line
-     option was supplied.  */
+     indices unless the user has done
+     "set use-deprecated-index-sections on".  */
   if (version < 6 && !deprecated_ok)
     {
       static int warning_printed = 0;
       if (!warning_printed)
 	{
-	  warning (_("Skipping deprecated .gdb_index section in %s, pass "
-		     "--use-deprecated-index-sections to use them anyway"),
+	  warning (_("\
+Skipping deprecated .gdb_index section in %s.\n\
+Do \"set use-deprecated-index-sections on\" to use them anyway.\n\
+This can be done from the command line by passing\n\
+`-iex \"set use-deprecated-index-sections on\"' to gdb."),
 		   filename);
 	  warning_printed = 1;
 	}
@@ -19630,6 +19633,17 @@ the demangler."),
 			   NULL, show_check_physname,
 			   &setdebuglist, &showdebuglist);
 
+  add_setshow_boolean_cmd ("use-deprecated-index-sections",
+			   no_class, &use_deprecated_index_sections, _("\
+Set whether to use deprecated gdb_index sections."), _("\
+Show whether to use deprecated gdb_index sections."), _("\
+When enabled .gdb_index sections that have been deprecated are used anyway.\n\
+Normally they are ignored either because of a missing feature or\n\
+performance issue."),
+			    NULL,
+			    NULL,
+			    &setlist, &showlist);
+
   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
 	       _("\
 Save a gdb-index file.\n\
Index: main.c
===================================================================
RCS file: /cvs/src/src/gdb/main.c,v
retrieving revision 1.110
diff -u -p -r1.110 main.c
--- main.c	2 Jul 2012 12:05:00 -0000	1.110
+++ main.c	18 Jul 2012 22:21:18 -0000
@@ -471,8 +471,6 @@ captured_main (void *data)
       {"args", no_argument, &set_args, 1},
       {"l", required_argument, 0, 'l'},
       {"return-child-result", no_argument, &return_child_result, 1},
-      {"use-deprecated-index-sections", no_argument,
-       &use_deprecated_index_sections, 1},
       {0, no_argument, 0, 0}
     };
 
Index: symfile.h
===================================================================
RCS file: /cvs/src/src/gdb/symfile.h,v
retrieving revision 1.110
diff -u -p -r1.110 symfile.h
--- symfile.h	18 Jul 2012 16:12:17 -0000	1.110
+++ symfile.h	18 Jul 2012 22:21:18 -0000
@@ -673,9 +673,6 @@ extern void dwarf2_build_frame_info (str
 
 void dwarf2_free_objfile (struct objfile *);
 
-/* Whether to use deprecated .gdb_index sections.  */
-extern int use_deprecated_index_sections;
-
 /* From mdebugread.c */
 
 /* Hack to force structures to exist before use in parameter list.  */
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.990
diff -u -p -r1.990 gdb.texinfo
--- doc/gdb.texinfo	5 Jul 2012 01:08:24 -0000	1.990
+++ doc/gdb.texinfo	18 Jul 2012 22:21:19 -0000
@@ -1247,13 +1247,6 @@ memory usage after it completes each com
 This option causes @value{GDBN} to print its version number and
 no-warranty blurb, and exit.
 
-@item -use-deprecated-index-sections
-@cindex @code{--use-deprecated-index-sections}
-This option causes @value{GDBN} to read and use deprecated
-@samp{.gdb_index} sections from symbol files.  This can speed up
-startup, but may result in some functionality being lost.
-@xref{Index Section Format}.
-
 @end table
 
 @node Startup
@@ -16753,6 +16746,15 @@ $ objcopy --add-section .gdb_index=symfi
     --set-section-flags .gdb_index=readonly symfile symfile
 @end smallexample
 
+@value{GDBN} will normally ignore older versions of @file{.gdb_index}
+sections that have been deprecated.  Usually they are deprecated because
+they are missing a new feature or have performance issues.
+To tell @value{GDBN} to use a deprecated index section anyway
+specify @code{set use-deprecated-index-sections on}.
+The default is @code{off}.
+This can speed up startup, but may result in some functionality being lost.
+@xref{Index Section Format}.
+
 There are currently some limitation on indices.  They only work when
 for DWARF debugging information, not stabs.  And, they do not
 currently work for programs using Ada.
@@ -40408,7 +40410,7 @@ Version 4 uses a different hashing funct
 Version 6 includes symbols for inlined functions, whereas versions 4
 and 5 do not.  Version 7 adds attributes to the CU indices in the
 symbol table.  @value{GDBN} will only read version 4, 5, or 6 indices
-if the @code{--use-deprecated-index-sections} option is used.
+by specifying @code{set use-deprecated-index-sections on}.
 
 @item
 The offset, from the start of the file, of the CU list.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]