From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14589 invoked by alias); 19 Jul 2012 18:26:10 -0000 Received: (qmail 14309 invoked by uid 22791); 19 Jul 2012 18:26:03 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BJ,TW_JC,TW_YM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-ey0-f201.google.com (HELO mail-ey0-f201.google.com) (209.85.215.201) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 19 Jul 2012 18:25:45 +0000 Received: by eaai13 with SMTP id i13so161019eaa.0 for ; Thu, 19 Jul 2012 11:25:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:content-type:content-transfer-encoding:message-id:date :to:cc:subject:in-reply-to:references:x-mailer:from :x-gm-message-state; bh=ScQfx+kimhYOnZJnUbdF6jlhV8cq2ehubJvWO/XYbVk=; b=Fr2ypogkl4t9X+dW9dkWepzbwQYvIwr2imIzKC3uksLurObD92HvTq6FWldC7uYiJZ y3HfqZCKsXa8FWNzZProf4LVnMdvMSQBh0FDY8x4QbN/XgogTZHwe2/3N3bBwWa90sMu re9lfNAQD4k3qpCSpsijFfqFFlCHVhsFvi4tgjQIwz0Gl4G9IIL098/eVh5T3tfc7i/F gs+3Qov9MPIHPoD7cBJpVqdrh5WghcZu2r7/rxHWftPDyYTcJJ35TGTTqdo1yR6EgvfU oHTpaD6mcDxOt0otNx8QXvu++lBNot5FKGoKTobP1BRelQIaAq1iadSNw8VvanhThJqi PaEA== Received: by 10.181.11.234 with SMTP id el10mr1358685wid.2.1342722344332; Thu, 19 Jul 2012 11:25:44 -0700 (PDT) Received: by 10.181.11.234 with SMTP id el10mr1358680wid.2.1342722344295; Thu, 19 Jul 2012 11:25:44 -0700 (PDT) Received: from hpza10.eem.corp.google.com ([74.125.121.33]) by gmr-mx.google.com with ESMTPS id s44si3687115eeo.0.2012.07.19.11.25.44 (version=TLSv1/SSLv3 cipher=AES128-SHA); Thu, 19 Jul 2012 11:25:44 -0700 (PDT) Received: from ruffy2.mtv.corp.google.com (ruffy2.mtv.corp.google.com [172.18.110.129]) by hpza10.eem.corp.google.com (Postfix) with ESMTP id E5E4D20004E; Thu, 19 Jul 2012 11:25:42 -0700 (PDT) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <20488.20773.692409.554409@ruffy2.mtv.corp.google.com> Date: Thu, 19 Jul 2012 18:26:00 -0000 To: Eli Zaretskii , jan.kratochvil@redhat.com cc: gdb-patches@sourceware.org Subject: Re: [RFA, doc RFA] New option set use-deprecated-index-sections In-Reply-To: <83hat38ztr.fsf@gnu.org> References: <20120717214257.GA9394@host2.jankratochvil.net> <20487.14790.662664.583456@ruffy2.mtv.corp.google.com> <20120718233303.GA32519@host2.jankratochvil.net> <83liif91io.fsf@gnu.org> <83hat38ztr.fsf@gnu.org> From: dje@google.com X-Gm-Message-State: ALoCoQm+ZQjPJDYOvWgUv+VGEVvzHtQzQOhahACmaqUUCgyZsaKFDH2hPnwPWjqURJNBZuvjV79sgUOOR0Mr+x1iXsr9E/h0f0av4Vdg9+cs/bZvnmFbvNwNijLgmk1wIhpyQeua2eaTHBXG6wI90jnUMFJxfOyPjinAbfnnN0Qee8/3/6mU/9C/4N6aeAPtECgQf3S3hnjT X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-07/txt/msg00366.txt.bz2 Eli Zaretskii writes: > > Date: Thu, 19 Jul 2012 09:27:46 -0700 > > From: Doug Evans > > Cc: Jan Kratochvil , gdb-patches@sourceware.org > > > > On Thu, Jul 19, 2012 at 9:08 AM, Eli Zaretskii wrote: > > >> Date: Thu, 19 Jul 2012 01:33:03 +0200 > > >> From: Jan Kratochvil > > >> Cc: gdb-patches@sourceware.org, eliz@gnu.org > > >> > > >> On Thu, 19 Jul 2012 00:33:42 +0200, dje@google.com wrote: > > >> > + use "-iex 'set use-deprecated-index-sections on'". > > >> [...] > > >> > +`-iex \"set use-deprecated-index-sections on\"' to gdb."), > > >> > > >> It is more Eli's decision but I would find it overquoted. > > > > > > How about removing that sentence altogether? We have no reason to > > > advertise -iex in that particular warning message. > > > > I'd like to keep the content of the warning. > > The text you suggested is: > > 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); > > I'm saying that mentioning the "set" command is enough, no need to > also say that the command can be invoked through -iex, because _any_ > GDB command can be invoked like that. > > That said, I won't argue. How about this? 2012-07-19 Doug Evans * 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 19 Jul 2012 18:15:39 -0000 @@ -114,11 +114,11 @@ * 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. 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 +139,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.694 diff -u -p -r1.694 dwarf2read.c --- dwarf2read.c 19 Jul 2012 16:35:48 -0000 1.694 +++ dwarf2read.c 19 Jul 2012 18:15:40 -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,17 @@ 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\" before the file is read\n\ +to use the section anyway."), filename); warning_printed = 1; } @@ -19652,6 +19654,18 @@ 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, deprecated .gdb_index sections are used anyway.\n\ +Normally they are ignored either because of a missing feature or\n\ +performance issue.\n\ +Warning: This option must be enabled before gdb reads the file."), + 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 19 Jul 2012 18:15:40 -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.111 diff -u -p -r1.111 symfile.h --- symfile.h 18 Jul 2012 23:37:58 -0000 1.111 +++ symfile.h 19 Jul 2012 18:15:40 -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 19 Jul 2012 18:15:41 -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,28 @@ $ 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}. + +@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on} +must be done before gdb reads the file. The following will not work: + +@smallexample +$ gdb -ex "set use-deprecated-index-sections on" +@end smallexample + +Instead you must do, for example, + +@smallexample +$ gdb -iex "set use-deprecated-index-sections on" +@end smallexample + 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 +40423,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.