From: "Peikes, Wendy" <Wendy.Peikes@netapp.com>
To: Keith Seitz <keiths@redhat.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [RFC PATCH 0/2] Command expression evaulation substitution
Date: Wed, 25 Jan 2023 20:21:25 +0000 [thread overview]
Message-ID: <BYAPR06MB611720B57D0245EDBC4987CAE5CE9@BYAPR06MB6117.namprd06.prod.outlook.com> (raw)
In-Reply-To: <20230125193825.3665649-1-keiths@redhat.com>
Thank you so much for writing back.
So is this patch you incorporated based on the idea I sent you? If so THANK YOU!
wendy
-----Original Message-----
From: Keith Seitz <keiths@redhat.com>
Sent: Wednesday, January 25, 2023 11:38 AM
To: gdb-patches@sourceware.org
Cc: Peikes, Wendy <Wendy.Peikes@netapp.com>
Subject: [RFC PATCH 0/2] Command expression evaulation substitution
NetApp Security WARNING: This is an external email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
This RFC proposes a new syntax to allow arbitrary expressions to be substituted into command arguments.
For example, the first patch in this series adds a new `_env' Python convenience function which gives users access to the shell's environment variables. If a user wanted to access the value of an environment variable within a GDB command, though, they cannot currently do that:
(gdb) set logging file $_env("HOME")/$_env("MYLOG")
(gdb) show logging file
The current logfile is "$_env("HOME")/$_env("MYLOG")".
(gdb) eval "set logging file %s/%s", $_env("HOME"), $_env("MYLOG") evaluation of this expression requires the target program to be active
That `eval' doesn't work is likely a bug, but I nonetheless find the syntax quite cumbersome for this purpose.
Therefore, I've chosen to introduce a new marker for expression substitution, $().
The second patch implements a proof-of-concept implementation following this
concept:
(gdb) set logging file $($_env("HOME"))/$($_env("MYLOG"))
(gdb) show logging file
The current logfile is "/home/keiths/my.log".
There is a lot more to do to refine this new feature. For example, the value almost certainly needs to have a lot of format tweaking, since, for example, using chars does not work:
(gdb) p 'a'
$1 = 97 'a'
(gdb) echo $($1)\n
97 'a'
There are probably a multitude of other similar issues to be sorted out, such as arrays, repeating elements, symbol/object printing and so on.
If anyone has any suggestions on how to improve this value printing code, I'd love to hear 'em.
I've also chosen to hook this in at quite a low level so that all commands can immediately benefit from this. [That is, we don't have to add handling code into every command function in which we want to support this new syntax.] This may not be the best approach.
@Wendy.Peikes@netapp.com: Would this proposal satisfy NetApp's needs?
Keith Seitz (2):
Add $_env convenience function
Allow and evaluate expressions in command arguments
gdb/data-directory/Makefile.in | 1 +
gdb/python/lib/gdb/function/env.py | 21 ++++++++++
gdb/top.c | 65 ++++++++++++++++++++++++++++++
3 files changed, 87 insertions(+)
create mode 100644 gdb/python/lib/gdb/function/env.py
--
2.38.1
prev parent reply other threads:[~2023-01-25 20:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BYAPR06MB6117A6A68D09026F27C310D4E54C9@BYAPR06MB6117.namprd06.prod.outlook.com>
[not found] ` <BYAPR06MB611721469E1454F0CD94259DE55D9@BYAPR06MB6117.namprd06.prod.outlook.com>
2022-10-05 23:19 ` [PATCH] gdb: allow env var specifications in cmds 'set log', 'source', 'shell' Peikes, Wendy
2022-10-05 23:19 ` Peikes, Wendy
2022-10-06 19:34 ` Keith Seitz
2022-10-26 0:25 ` Peikes, Wendy
2023-01-25 19:38 ` [RFC PATCH 0/2] Command expression evaulation substitution Keith Seitz
2023-01-25 19:38 ` [RFC PATCH 1/2] Add $_env convenience function Keith Seitz
2023-02-03 17:18 ` Andrew Burgess
2023-02-03 18:34 ` Keith Seitz
2023-01-25 19:38 ` [RFC PATCH 2/2] Allow and evaluate expressions in command arguments Keith Seitz
2023-02-03 17:22 ` Andrew Burgess
2023-02-03 18:49 ` Keith Seitz
2023-02-17 22:31 ` Pedro Alves
2023-01-25 20:21 ` Peikes, Wendy [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BYAPR06MB611720B57D0245EDBC4987CAE5CE9@BYAPR06MB6117.namprd06.prod.outlook.com \
--to=wendy.peikes@netapp.com \
--cc=gdb-patches@sourceware.org \
--cc=keiths@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).