From: Joel Brobecker <brobecker@adacore.com>
To: Tom Tromey <tromey@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC/RFA] add struct parse_context to all command functions
Date: Tue, 21 Oct 2008 07:07:00 -0000 [thread overview]
Message-ID: <20081021070622.GA4035@adacore.com> (raw)
In-Reply-To: <m3skqqaglh.fsf@fleche.redhat.com>
> I don't understand why the parameterization is needed by command
> implementations. My understanding is that it is needed when resetting
> breakpoints (reparsing conditions or what have you). However, it
> seems like this could be done by simply parameterizing the parse
> functions and sticking a bit more state on the breakpoint.
> I assume I'm missing something here; I'd like to understand what.
Right - In terms of the parsing issue in isolation, adding a language
paramenter is what is going to be needed, and what I will eventually
do. In fact, this is something that I actually did. But by doing so,
I realized that all I did was moving the use of the current_language
global variable up in the call stack in other routines that really
shouldn't be using it either.
So the global purpose of the exercise has become to remove the use
of the current_language global (as well as the input_radix one, which
was actually recommended by Ulrich when I initially introduced this
subject). The fact this should fix the problem on IRIX almost for free
has almost become incidental (almost :-).
On my first approach to this issue, I started from the parse routines,
adding a language parameter, and slowly "propagated" this new parameter
up in the call stack (that is, adding this new parameters to the
callers, and using that parameter instead of using current_language).
But I felt disatisfied, because the number of uses of current_language
was in fact rapidly increasing.
If I work from the command functions, I work with a parameter right
from the start, so I won't have to increase the unwanted use of that
global, even temporarily.
> Also, why pass in this particular subset of globals? There are lots
> of globals in gdb, used all over. My view is that commands are by
> their nature singletons (unless you want to support multiple CLIs at
> once of course :-) and so would reasonably access global state even in
> a design from scratch. IOW, I think it would make sense to only
> bother with global-elimination for layers underneath the command
> functions.
For this thread, we need to restrict ourselves to the globals that
affect the interpretation of the commands entered by the user. I chose
these parameters because they have an influence on the parsing of
the command arguments. There will likely be others, as hinted by Ulrich
(I think he was thinking of adding the gdbarch, or something equivalent).
So this might only be a start...
Generally speaking, I think this fits well in the goal of avoiding
the use of global variables to pass information from one routine
to the next.
--
Joel
next prev parent reply other threads:[~2008-10-21 7:07 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 14:05 Joel Brobecker
2008-10-09 16:13 ` Tom Tromey
2008-10-09 22:20 ` Joel Brobecker
2008-10-20 16:16 ` Joel Brobecker
2008-10-20 19:03 ` Thiago Jung Bauermann
2008-10-21 0:47 ` Daniel Jacobowitz
2008-10-21 18:06 ` Ulrich Weigand
2008-10-21 18:18 ` Daniel Jacobowitz
2008-10-22 1:40 ` Joel Brobecker
2008-10-22 20:15 ` Tom Tromey
2008-10-22 20:36 ` Joel Brobecker
2008-10-21 1:22 ` Tom Tromey
2008-10-21 7:07 ` Joel Brobecker [this message]
2008-10-21 18:12 ` Ulrich Weigand
2008-10-21 18:58 ` Tom Tromey
2008-10-21 19:33 ` Tom Tromey
2008-10-22 18:03 ` Ulrich Weigand
2008-10-22 18:54 ` Tom Tromey
2008-10-22 22:24 ` Ulrich Weigand
2008-10-23 1:02 ` Tom Tromey
2008-10-23 19:50 ` Ulrich Weigand
2008-10-23 21:29 ` Tom Tromey
2008-10-24 13:01 ` Ulrich Weigand
2008-10-25 16:05 ` Tom Tromey
2008-10-27 17:07 ` Tom Tromey
2008-10-28 16:27 ` Ulrich Weigand
2008-10-28 18:17 ` Tom Tromey
2008-10-28 20:00 ` Ulrich Weigand
2008-10-25 16:25 ` Joel Brobecker
2008-10-25 16:46 ` Tom Tromey
2008-10-26 15:19 ` Joel Brobecker
2008-10-21 18:05 ` Ulrich Weigand
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=20081021070622.GA4035@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=tromey@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