From: Tom Tromey <tromey@redhat.com>
To: Thiago Jung Bauermann <bauerman@br.ibm.com>
Cc: gdb-patches@sourceware.org
Subject: Re: Function syntax
Date: Tue, 10 Jun 2008 00:00:00 -0000 [thread overview]
Message-ID: <m3fxrm2mpv.fsf@fleche.redhat.com> (raw)
In-Reply-To: <20080608182128.GA6248@caradoc.them.org> (Daniel Jacobowitz's message of "Sun\, 8 Jun 2008 14\:21\:28 -0400")
>>>>> "Daniel" == Daniel Jacobowitz <drow@false.org> writes:
Tom> Recently I've been thinking that $(...) should not simply eval the
Tom> '...' as a python expression. Instead, I'm leaning more toward a
Tom> function registry approach. I have two reasons for this.
Daniel> This sounds good to me.
Good :) I actually went ahead and implemented this a little while
back.
Daniel> Except we do need to define what the arguments to specified functions
Daniel> are, and I want a clear answer on that point before anything goes in.
Yes, I totally agree. IMO this is much more important than the
various implementation details -- those can be changed much more
easily than user-facing behavior.
Daniel> They could be Python syntax, or some other well-defined syntax which
Daniel> happens to be similar to Python. Would GDB convenience variables
Daniel> work? As values or as textual substitution?
Daniel> As long as we pick something and document it, I think the choice of
Daniel> what to pick is not too significant.
[...]
Daniel> Making them complete on a string seems too awkward when writing such
Daniel> things. At function-writing time it would be easier (but less
Daniel> flexible) to specify a list of arguments and have GDB handle the
Daniel> breaking up into words... I know we discussed this before but I can't
Daniel> remember the details now.
The way this works right now is that the first word is stripped from
the text between the parens. This is the function name and is looked
up in an internal table. The rest is passed, untranslated, as an
argument.
We talked about doing more parsing here for commands, and I guess by
extension functions. But I have kind of come around to the other
point of view -- leave the argument as a string and let the callee
deal with it.
One reason I prefer this is that it lets new functions require less
syntax. For instance, consider my canonical example of a function
that looks to see if the caller's stack frame matches the argument:
break somewhere if $(caller-is somewhere_else)
If we were dealing with sub-expressions or the like, this would have
to be a string. That just seems less gdb-ish to me -- though of
course this argument is somewhat weak in that other folks may have a
different idea about the nature of gdb's grammar.
I see your point about convenience variables. They would not be
automatically interpolated. On the other hand, nothing prevents a
python function from evalling an argument as a gdb expression.
Another reason I prefer this approach is that in general it is simpler
to write stuff in Python rather than C. I already plan to ship a
library of useful Python functions with this gdb -- adding more
utility code to handle parsing, completion, etc, is no big deal.
Tom> * I don't want to use $python(...) -- but I was wondering, doesn't
Tom> this already have a meaning if 'python' happens to be a
Tom> function-pointer-valued convenience variable?
Daniel> Yes, but this is always an issue defining new predefined convenience
Daniel> variables since they share a namespace with user variables.
I think this is an argument to keep the $(fn) syntax -- it would be
nice if these functions had a separate namespace. One reason in
particular I would like that is that I think we ought to ship a lot of
built-in ones, and it would be nice not to trample all over the user
namespace.
Tom
next prev parent reply other threads:[~2008-06-09 23:49 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-29 15:59 [RFC][patch 0/9] Python support in GDB Thiago Jung Bauermann
2008-04-29 15:59 ` [RFC][patch 8/9] export symtab mechanism to Python Thiago Jung Bauermann
2008-04-29 15:59 ` [RFC][patch 6/9] export frames " Thiago Jung Bauermann
2008-04-29 15:59 ` [RFC][patch 9/9] export threads " Thiago Jung Bauermann
2008-04-29 15:59 ` [RFC][patch 3/9] export hooks mechanism " Thiago Jung Bauermann
2008-04-29 21:29 ` Tom Tromey
2008-04-30 18:27 ` Joel Brobecker
2008-04-30 21:30 ` Tom Tromey
2008-05-27 18:22 ` Tom Tromey
2008-04-30 18:29 ` Daniel Jacobowitz
2008-04-30 23:00 ` Tom Tromey
2008-05-29 7:55 ` Daniel Jacobowitz
2008-05-30 14:59 ` Tom Tromey
2008-06-15 22:53 ` Thiago Jung Bauermann
2008-06-15 22:58 ` Tom Tromey
2008-06-16 3:22 ` Daniel Jacobowitz
2008-06-17 18:13 ` Thiago Jung Bauermann
2008-06-17 22:20 ` Joel Brobecker
2008-06-23 17:58 ` Tom Tromey
2008-04-29 15:59 ` [RFC][patch 5/9] permit GDB commands implemented in Python Thiago Jung Bauermann
2008-04-29 16:08 ` [RFC][patch 7/9] export block and symbol mechanism to Python Thiago Jung Bauermann
2008-04-29 18:11 ` [RFC][patch 4/9] export breakpoints " Thiago Jung Bauermann
2008-04-29 18:15 ` [RFC][patch 1/9] initial Python support Thiago Jung Bauermann
2008-05-05 8:12 ` Thiago Jung Bauermann
2008-05-05 14:39 ` Daniel Jacobowitz
2008-05-05 14:46 ` Thiago Jung Bauermann
2008-05-05 16:50 ` Daniel Jacobowitz
2008-05-06 2:38 ` Thiago Jung Bauermann
2008-05-11 22:24 ` Thiago Jung Bauermann
2008-05-11 22:26 ` Daniel Jacobowitz
2008-05-12 20:33 ` Thiago Jung Bauermann
2008-05-12 20:39 ` Daniel Jacobowitz
2008-05-12 21:00 ` Thiago Jung Bauermann
2008-05-29 0:29 ` Daniel Jacobowitz
2008-05-30 13:07 ` Function syntax (Was: [RFC][patch 1/9] initial Python support) Tom Tromey
2008-06-08 15:24 ` Doug Evans
2008-06-08 15:32 ` Function syntax Tom Tromey
2008-06-08 18:21 ` Function syntax (Was: [RFC][patch 1/9] initial Python support) Daniel Jacobowitz
2008-06-09 13:48 ` Thiago Jung Bauermann
2008-06-09 18:43 ` Daniel Jacobowitz
2008-06-10 0:24 ` Function syntax Tom Tromey
2008-06-10 0:04 ` Tom Tromey
2008-06-11 0:04 ` Thiago Jung Bauermann
2008-06-10 0:00 ` Tom Tromey [this message]
2008-05-30 14:47 ` [RFC][patch 1/9] initial Python support Tom Tromey
2008-06-15 22:35 ` thiagoju
2008-06-23 17:36 ` Tom Tromey
2008-07-06 17:28 ` Tom Tromey
2008-07-08 4:12 ` Thiago Jung Bauermann
2008-07-15 7:38 ` [RFA] " Thiago Jung Bauermann
2008-07-15 17:19 ` Tom Tromey
2008-07-15 18:33 ` Thiago Jung Bauermann
2008-07-15 19:03 ` Tom Tromey
2008-07-16 7:14 ` Thiago Jung Bauermann
2008-07-16 14:39 ` Tom Tromey
2008-07-16 22:02 ` Thiago Jung Bauermann
2008-07-18 19:50 ` Daniel Jacobowitz
2008-07-18 23:24 ` Tom Tromey
2008-07-19 0:45 ` Daniel Jacobowitz
2008-07-19 19:50 ` [RFA] iRe: " Thiago Jung Bauermann
2008-07-19 21:13 ` Daniel Jacobowitz
2008-07-19 22:13 ` Thiago Jung Bauermann
2008-07-20 23:47 ` Thiago Jung Bauermann
2008-07-21 2:03 ` Daniel Jacobowitz
2008-07-23 17:46 ` [obvious] Wipe out CONFIG_INITS Thiago Jung Bauermann
2008-07-20 22:43 ` [RFA] Re: [RFC][patch 1/9] initial Python support Tom Tromey
2008-07-21 1:59 ` Daniel Jacobowitz
2008-07-21 15:29 ` [RFA][patch 1/9] Yet another respin of the patch with " Thiago Jung Bauermann
2008-07-21 16:47 ` Thiago Jung Bauermann
2008-07-26 13:07 ` Eli Zaretskii
2008-07-26 13:43 ` Daniel Jacobowitz
2008-07-26 14:02 ` Eli Zaretskii
2008-07-26 14:42 ` Daniel Jacobowitz
2008-07-26 17:06 ` Eli Zaretskii
2008-07-26 17:26 ` Tom Tromey
2008-07-26 19:21 ` Eli Zaretskii
2008-07-26 17:40 ` Daniel Jacobowitz
2008-07-26 17:10 ` Tom Tromey
2008-07-26 17:40 ` Eli Zaretskii
2008-07-26 18:00 ` Tom Tromey
2008-07-26 18:29 ` Eli Zaretskii
2008-07-26 18:45 ` Tom Tromey
2008-07-26 19:34 ` Eli Zaretskii
2008-07-30 14:59 ` Thiago Jung Bauermann
2008-07-30 17:57 ` Eli Zaretskii
2008-08-04 4:44 ` Thiago Jung Bauermann
2008-08-04 19:18 ` Eli Zaretskii
2008-08-05 3:42 ` Thiago Jung Bauermann
2008-07-26 17:04 ` Tom Tromey
2008-07-26 17:35 ` Daniel Jacobowitz
2008-07-26 17:42 ` Tom Tromey
2008-07-26 19:18 ` Eli Zaretskii
2008-08-04 2:52 ` Thiago Jung Bauermann
2008-08-04 3:22 ` Eli Zaretskii
2008-08-04 12:15 ` Daniel Jacobowitz
2008-08-04 19:50 ` Eli Zaretskii
2008-08-05 2:08 ` Daniel Jacobowitz
2008-08-05 2:41 ` Thiago Jung Bauermann
2008-08-05 3:32 ` Eli Zaretskii
2008-08-05 12:19 ` Daniel Jacobowitz
2008-08-05 18:10 ` Eli Zaretskii
2008-08-05 18:23 ` Daniel Jacobowitz
2008-08-05 18:50 ` Eli Zaretskii
2008-08-05 18:58 ` Daniel Jacobowitz
2008-07-26 19:20 ` Eli Zaretskii
2008-07-26 18:11 ` Eli Zaretskii
2008-07-26 18:30 ` Daniel Jacobowitz
2008-07-26 19:26 ` Eli Zaretskii
2008-08-01 20:04 ` Tom Tromey
2008-08-02 17:38 ` Daniel Jacobowitz
2008-08-02 17:50 ` Tom Tromey
2008-08-02 19:00 ` Eli Zaretskii
2008-08-05 4:19 ` Thiago Jung Bauermann
2008-08-05 18:14 ` Eli Zaretskii
2008-08-06 5:35 ` [RFA][patch 1/9] Initial Python support, patch du jour Thiago Jung Bauermann
2008-08-06 18:24 ` Eli Zaretskii
2008-08-06 19:53 ` Thiago Jung Bauermann
2008-08-04 4:44 ` [RFA][patch 1/9] Yet another respin of the patch with initial Python support Thiago Jung Bauermann
2008-08-04 19:22 ` Eli Zaretskii
2008-08-05 1:24 ` Thiago Jung Bauermann
2008-08-02 17:41 ` Daniel Jacobowitz
2008-08-02 19:02 ` Eli Zaretskii
2008-08-02 19:07 ` Daniel Jacobowitz
2008-07-15 18:01 ` [RFA] Re: [RFC][patch 1/9] " Thiago Jung Bauermann
2008-04-29 18:17 ` [RFC][patch 2/9] export values mechanism to Python Thiago Jung Bauermann
2008-05-29 1:23 ` Daniel Jacobowitz
2008-06-03 0:19 ` Tom Tromey
2008-06-03 13:04 ` Daniel Jacobowitz
2008-06-03 14:52 ` Tom Tromey
2008-07-07 6:03 ` Thiago Jung Bauermann
2008-07-07 23:44 ` Tom Tromey
2008-07-26 2:55 ` Daniel Jacobowitz
2008-07-26 17:17 ` Tom Tromey
2008-07-26 17:41 ` Daniel Jacobowitz
2008-07-30 3:01 ` Tom Tromey
2008-07-30 14:26 ` Thiago Jung Bauermann
2008-08-13 6:45 ` [python] acessing struct elements Thiago Jung Bauermann
2008-08-13 12:38 ` Daniel Jacobowitz
2008-08-13 20:38 ` Thiago Jung Bauermann
2008-08-17 20:16 ` Tom Tromey
2008-04-29 18:38 ` [RFC][patch 0/9] Python support in GDB Eli Zaretskii
2008-04-29 20:37 ` Thiago Jung Bauermann
2008-04-29 21:22 ` Tom Tromey
2008-04-30 7:54 ` Eli Zaretskii
2008-04-30 19:38 ` Thiago Jung Bauermann
2008-04-30 19:52 ` Eli Zaretskii
2008-05-02 18:30 ` Vladimir Prus
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=m3fxrm2mpv.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=bauerman@br.ibm.com \
--cc=gdb-patches@sourceware.org \
/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