From patchwork Sat Jul 6 10:49:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 33618 Received: (qmail 71635 invoked by alias); 6 Jul 2019 10:50:05 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 71531 invoked by uid 89); 6 Jul 2019 10:50:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-20.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mailsec101.isp.belgacom.be Received: from mailsec101.isp.belgacom.be (HELO mailsec101.isp.belgacom.be) (195.238.20.97) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 06 Jul 2019 10:50:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1562410203; x=1593946203; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=22nD/7lqnmVUlvjHzd2RXQNn6h31EO6fWTRZ1C4AuJY=; b=R0AoB2fLgJDNoU5cIehtTojKtMqSCw6l8oKwHMtsSBPTF3c2MRPv6UkX wq2KphdbVFNXbBtECnzay7MfNLN9tw==; Received: from 96.218-128-109.adsl-dyn.isp.belgacom.be (HELO md.home) ([109.128.218.96]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 06 Jul 2019 12:49:55 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFAv3 3/3] NEWS and documentation for $_gdb_setting and $_gdb_int_setting. Date: Sat, 6 Jul 2019 12:49:47 +0200 Message-Id: <20190706104947.30301-4-philippe.waroquiers@skynet.be> In-Reply-To: <20190706104947.30301-1-philippe.waroquiers@skynet.be> References: <20190706104947.30301-1-philippe.waroquiers@skynet.be> MIME-Version: 1.0 X-IsSubscribed: yes gdb/ChangeLog 2019-06-07 Philippe Waroquiers * NEWS: Mention $_gdb_setting and $_gdb_int_setting. gdb/doc/ChangeLog 2019-06-07 Philippe Waroquiers * gdb.texinfo (Convenience Funs): Document the new $_gdb_setting and $_gdb_int_setting convenience functions. --- gdb/NEWS | 5 ++++ gdb/doc/gdb.texinfo | 66 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/gdb/NEWS b/gdb/NEWS index 34c544c3d5..d17d37ceff 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -11,6 +11,11 @@ scripts that should work error-free with many different versions, such as in system-wide init files. +* New built-in convenience functions $_gdb_setting and $_gdb_int_setting + provide access to values of the GDB settings. They are handy + for changing the logic of user defined commands depending on the + current GDB settings. + * GDB now supports Thread Local Storage (TLS) variables on several FreeBSD architectures (amd64, i386, powerpc, riscv). Other architectures require kernel changes. TLS is not yet supported for diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 299c4a12a1..e31f43f417 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -11820,9 +11820,73 @@ $3 = void $4 = 1 @end smallexample +@item $_gdb_setting (@var{setting}) +@findex $_gdb_setting@r{, convenience function} +Return the value of the @value{GDBN} @var{setting} as a string. +@var{setting} is any setting that can be used in a @code{set} or +@code{show} command (@pxref{Controlling GDB}). +@code{$_gdb_setting} works for for any setting kind. In particular, +it also works for non string setting kinds such as boolean, auto boolean +and integer settings. + +@smallexample +(@value{GDBP}) show print frame-arguments +Printing of non-scalar frame arguments is "scalars". +(@value{GDBP}) p $_gdb_setting("print frame-arguments") +$2 = "scalars" +(@value{GDBP}) p $_gdb_setting("height") +$3 = "30" +(@value{GDBP}) +@end smallexample + +@item $_gdb_int_setting (@var{setting}) +@findex $_gdb_int_setting@r{, convenience function} +Return the value of the @value{GDBN} @var{setting} as an integer. +This only works for boolean, auto boolean and integer settings. +The boolean values @code{off} and @code{on} are converted to +the integer values @code{0} and @code{1}. The value @code{auto} is +converted to the value @code{2}. +Some integer settings accepts an @code{unlimited} value. +Depending on the setting, the @code{set} command also accepts +the value @code{0} or the value @code{@minus{}1} as a synonym for +@code{unlimited}. +For example, @code{set height unlimited} is equivalent to +@code{set height 0}. +Some other settings accepting the @code{unlimited} value +are using the value @code{0} to literally mean zero. +For example, @code{set history size 0} indicates to not +record any @value{GDBN} commands in the command history. +For such settings, @code{@minus{}1} is the synonym +for @code{unlimited}. + +The function @code{$_gdb_int_setting} converts the unlimited value +to a @code{0} or a @code{@minus{}1} value according to what the +@code{set} command uses. + +@smallexample +@group +(@value{GDBP}) p $_gdb_setting("height") +$3 = "30" +(@value{GDBP}) p $_gdb_int_setting("height") +$4 = 30 +(@value{GDBP}) set height unlimited +(@value{GDBP}) p $_gdb_setting("height") +$5 = "unlimited" +(@value{GDBP}) p $_gdb_int_setting("height") +$6 = 0 +@end group +@group +(@value{GDBP}) p $_gdb_setting("history size") +$7 = "unlimited" +(@value{GDBP}) p $_gdb_int_setting("history size") +$8 = -1 +(@value{GDBP}) +@end group +@end smallexample + @end table -These functions require @value{GDBN} to be configured with +The following functions require @value{GDBN} to be configured with @code{Python} support. @table @code