public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* Add a way to invoke redefined (overridden) GDB commands
@ 2020-09-14  9:39 Marco Barisione
  2020-09-14  9:39 ` [PATCH 1/2] Move the code to execute a cmd_list_element out from execute_command Marco Barisione
                   ` (3 more replies)
  0 siblings, 4 replies; 23+ messages in thread
From: Marco Barisione @ 2020-09-14  9:39 UTC (permalink / raw)
  To: gdb-patches

Currently, when a GDB command is redefined, the original implementation is not
available any more.  This makes it difficult to build features on top of
existing commands.

Last year I submitted a patch to fix this but I ran out of time to address the
review comments (the original patch was sent on the 28th of October 2019).
These patches restart that work and should address all the comments I got last
time.  As the patchea are very different and a long time passed, I'm
submitting as a new series.

My patches add a new "uplevel" command and a new gdb.Command.invoke_uplevel
method inspired by TCL (as initially suggested by Andrew Burgess) so you can
do this:

    (gdb) define run
    echo Will run!\n
    uplevel 0 run
    end
    (gdb) run
    Will run!
    [... normal output of run ...]


There are a couple of other things which could be added to make the "uplevel"
command more helpful, but I think they are out of scope and my patches are
already useful as they are.

The first thing is adding a way of accessing the untokenised arguments to a
command via something like "$arg@" (Andrew Burgess suggested "$argv", but
Pedro Alves pointed out that would look like an argument vector).

Another thing which could be added is the ability to do "uplevel -1 ..." to
access the directly redefined command.
This is implemented in Python but I couldn't find an obvious way of doing that
for the "uplevel" command as there's no way of knowing which command you are
currently executing (at least from what I could see).
Maybe it could be implemented in a similar way to how command arguments are
kept around with scoped_user_args_level, so we could keep a stack of all (user
and non-user) commands which are being executed.  By checking the latest one
you can know what "uplevel -1" would apply to.


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2020-10-20 18:32 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-14  9:39 Add a way to invoke redefined (overridden) GDB commands Marco Barisione
2020-09-14  9:39 ` [PATCH 1/2] Move the code to execute a cmd_list_element out from execute_command Marco Barisione
2020-10-05  9:08   ` Andrew Burgess
2020-10-05  9:40     ` Marco Barisione
2020-10-05 17:49       ` Andrew Burgess
2020-09-14  9:39 ` [PATCH 2/2] Add a way to preserve redefined GDB commands for later invocation Marco Barisione
2020-09-14 16:18   ` Eli Zaretskii
2020-09-14 16:51     ` Marco Barisione
2020-10-05 10:24   ` Andrew Burgess
2020-10-05 11:44     ` Marco Barisione
2020-10-05 18:11       ` Andrew Burgess
2020-10-06  7:18         ` Marco Barisione
2020-09-28  7:54 ` [PING] Add a way to invoke redefined (overridden) GDB commands Marco Barisione
2020-10-05  7:42   ` Marco Barisione
2020-10-12 11:50 ` Pedro Alves
2020-10-19 17:41   ` Marco Barisione
2020-10-19 18:05     ` Pedro Alves
2020-10-19 18:47       ` Philippe Waroquiers
2020-10-19 19:28         ` Marco Barisione
2020-10-20 15:06           ` Pedro Alves
2020-10-20 18:19             ` Marco Barisione
2020-10-20 18:32               ` Pedro Alves
2020-10-20 15:15         ` Pedro Alves

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).