This is the mail archive of the mailing list for the GDB project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: about current_gdbarch

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]