This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: about current_gdbarch
I see. Thank you Michael. :)
teawater
On Tue, Apr 22, 2008 at 2:19 AM, Michael Snyder <msnyder@specifix.com> wrote:
>
> On Mon, 2008-04-21 at 17:59 +0800, Tea wrote:
> > Hi Thiago,
> >
> > In your mail, you want me remove the "current_gdbarch" from my patch.
> > But it's so hard to me.
> > Because most of "current_gdbarch" is used in function "record_message"
> > and sub-function of it(such as i386_record and mips_record).
> > "record_message" will be called by function "resume" that use a lot of
> > "current_gdbarch" in it. So I think get current gdbarch without
> > "current_gdbarch" is so hard.
> >
> > Could you please help me about it? Or let me keep "current_gdbarch" in
> > current time. Maybe I can remove it in the future.
>
> gdbarch is a data structure that's meant to be passed around
> as a token to the various functions that will use it. It's
> a relatively new interface (though it's been in place for a
> number of years now).
>
> "current_gdbarch" is a cheat -- a global constant -- that
> we have allowed ourselves to use while we transition various
> parts of gdb into using the gdbarch interface.
>
> I think what you are being encouraged to do is, rather than
> just using the global constant whenever you need it, start
> at highest possible level of calling into your code (eg.
> "record_message" in infrun.c) and pass in a pointer to
> current_gdbarch (assuming an actual gdbarch pointer is not
> available). Then let the rest of your code pass that pointer
> around, and use it instead of using the global.
>
> That way, eventually, we only have one reference to the
> global "current_gdbarch" to get rid of, instead of many.
>
> Michael
>
>
>
>