This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Passing MIPS debug hints between gcc and gdb
- From: Richard Sandiford <richard at codesourcery dot com>
- To: fnf at specifix dot com
- Cc: gcc-patches at gcc dot gnu dot org, gdb-patches at sourceware dot org
- Date: Thu, 11 May 2006 07:57:29 +0100
- Subject: Re: [RFC] Passing MIPS debug hints between gcc and gdb
- References: <200605101206.01433.fnf@specifix.com>
Fred Fish <fnf@specifix.com> writes:
> Currently gcc supports generating two zero content sections, the names
> of which are supposed to be used by gdb.
>
> One specifies the ABI, is of the form ".mdebug.abiXX", and gdb does
> currently look for it.
>
> Another has a name of the form ".gcc_compiled_longXX" and gdb does not
> currently look for it.
Ah. Presumably the patch to do that was never contributed then.
It does exist somewhere!
> This is supposed to handle the case where gcc has been given the
> command line option -mlong32 or -mlong64. Since these can be used
> independently of the ABI, the current gcc code should be changed to
> always generate this section.
Right.
> However, the size of pointers can also be affected by -mlongXX. In
> theory we can figure out how the pointer size is affected by knowing
> the ABI and other stuff, but it's much simplier to just let gcc
> specify it the same way as the size of longs.
You're right: the size of everything is determined by the combination of
the ABI "name" and long size. The gdb patch I mentioned did do that IIRC.
(I didn't write that patch myself, and my memory's hazy.) It was certainly
the intention that gdb work this out for itself.
> I have found, from chasing other MIPS gdb testsuite failures, that gdb
> also needs to know when code has been compiled with soft float, on
> hardware that supports hard float, so that it can call functions by
> hand with float arguments in the right location. So we need another
> section for that.
>
> Just to complicate things, the latest development binutils linker
> removes sections with no contents, so all of these disappear in the
> output file.
Using empty sections was always a hack, to be honest (modelled on the
old .gcc_compiled_v3 thing, whatever it was called). I suppose we
should be using note sections really.
You didn't mention it, but your patch removes the EABI conditional above
the .gcc_compiled_long* code. I'm not comfortable with adding the
sections unconditionally though. It may confuse IRIX.
As far as I'm concerned, EABI is the only ABI where we support both
-mlong32 and -mlong64. ISTR someone deciding to use -mabi=o64 -mlong64
as well. Since both EABI and o64 are basically GNU inventions, I'd be
OK with relaxing the condition to EABI || o64 if it's o64 you need this
for. I suppose we should make the incorrect -mlong* option an error for
other ABIs. (Another one for the TODO list.)
Richard