From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39325 invoked by alias); 17 Aug 2015 17:34:33 -0000 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 Received: (qmail 39314 invoked by uid 89); 17 Aug 2015 17:34:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL,BAYES_20,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 17 Aug 2015 17:34:31 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 6A2FC8E4E4; Mon, 17 Aug 2015 17:34:30 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t7HHYSkm009583; Mon, 17 Aug 2015 13:34:29 -0400 Message-ID: <55D21B24.2090603@redhat.com> Date: Mon, 17 Aug 2015 17:34:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Andrew Burgess , gdb-patches@sourceware.org Subject: Re: [PATCH v2 2/3] gdb: New maintenance command to disable bfd sharing. References: <77dce5f054bd1f7be0f87fe36c5d7e4acdef7c9b.1439454670.git.andrew.burgess@embecosm.com> In-Reply-To: <77dce5f054bd1f7be0f87fe36c5d7e4acdef7c9b.1439454670.git.andrew.burgess@embecosm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2015-08/txt/msg00434.txt.bz2 On 08/13/2015 01:44 PM, Andrew Burgess wrote: > In some rare maintainer cases it is desirable to be able to disable bfd > sharing. This patch adds new commands maintenance set/show commands for > bfd-sharing, allowing gdb's bfd cache to be turned off. > * Support for process record-replay and reverse debugging on aarch64*-linux* > diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog > index 846ac24..9d553db 100644 > --- a/gdb/doc/ChangeLog > +++ b/gdb/doc/ChangeLog > @@ -1,3 +1,10 @@ > +2015-08-11 Andrew Burgess > + > + * gdb.texinfo (Maintenance Commands): Move documentation of "main > + info bfds" to... > + (File Caching): A New section. Outline bfd caching, and add new > + description for "main set/show bfd-sharing". > + > 2015-08-07 Pedro Alves > > * gdb.texinfo (Maintenance Commands): Document "maint set/show > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > index 900970b..3cfb1a7 100644 > --- a/gdb/doc/gdb.texinfo > +++ b/gdb/doc/gdb.texinfo > @@ -18190,6 +18190,36 @@ Set whether a source file may have multiple base names. > Show whether a source file may have multiple base names. > @end table > > +@node File Caching > +@section File Caching > +@cindex caching of opened files > +@cindex caching of bfd objects > + > +To speed up file loading, and reduce memory usage, @value{GDBN} will > +reuse the @code{bfd} objects used to track open files. @xref{Top, , > +BFD, bfd, The Binary File Descriptor Library}. The following commands > +allow visibility and control of the caching beaviour. typo "beaviour". (While at it, I think the manual is meant to standardize on USA spelling, thus "behavior".) > + > +@table @code > +@kindex maint info bfds > +@item maint info bfds > +This prints information about each @code{bfd} object that is known to > +@value{GDBN}. > + > +@kindex maint set bfd-sharing > +@kindex maint show bfd-sharing > +@kindex bfd caching > +@item maint set bfd-sharing > +@item maint show bfd-sharing > +Control whether @code{bfd} objects can be shared. When sharing is > +enabled @value{GDBN} will reuse already open @code{bfd} objects rather I believe present tense is preferred in the manual, like: s/will reuse/reuses/ > +than reopening the same file. Turning sharing off does not cause > +already shared @code{bfd} objects to be unshared, but all future files > +that are opened will create a new @code{bfd} object. Similarly, > +re-enabling sharing will not cause multiple existing @code{bfd} ...re-enabling sharing does not cause... > +objects to be collapsed into a single shared @code{bfd} object. > +@end table > + > @node Separate Debug Files > @section Debugging Information in Separate Files > @cindex separate debugging information files > @@ -33987,11 +34017,6 @@ Shared library events. > @@ -111,6 +111,11 @@ DEFINE_REGISTRY (bfd, GDB_BFD_DATA_ACCESSOR) > > static htab_t gdb_bfd_cache; > > +/* When true gdb will reuse an existing bfd object if the filename, > + modification time, and file size all match. */ > + > +static int bfd_sharing; Initialize it here? Like: static int bfd_sharing = 1; > gdb_bfd_ref (abfd); > return abfd; > @@ -942,4 +950,17 @@ _initialize_gdb_bfd (void) > add_cmd ("bfds", class_maintenance, maintenance_info_bfds, _("\ > List the BFDs that are currently open."), > &maintenanceinfolist); > + > + add_setshow_boolean_cmd ("bfd-sharing", no_class, > + &bfd_sharing, _("\ > +Set whether gdb will share bfds that appear to be the same file."), _("\ > +Show whether gdb will share bfds that appear to be the same file."), _("\ > +When enabled gdb will reuse existing bfds rather than reopening the\n\ > +same file. To decide if two files are the same then gdb compares the\n\ > +filename, file size, file modification time, and file inode."), > + NULL, > + NULL, Please add a show hook, for i18n. > + &maintenance_set_cmdlist, > + &maintenance_show_cmdlist); > + bfd_sharing = 1; See above. > } > Otherwise LGTM. Thanks, Pedro Alves