On Wed, May 02, 2001 at 04:31:03PM -0700, Ian Thompson wrote:
> I'm running into problems with the debug information that is generated
> by the kernel compilation process. Basically, I'm seeing that
> multiple function symbols have the same begin address in the .mdebug
> section. For example -- the init_arch and r3081_wait functions in my
> build have differnet addresses as far as compilation is concerned, and
> code executes correctly. When I look into the .mdebug section, I see
> that the begin, end, stab, and external records are all correct for
> the r3081_wait function, but that the begin record for the init_arch
> function is the same as that for the the r3081_wait function! This in
> turn seems to be causing the stab and external records to be incorrect,
> causing symbolic problems in my debugger.
> I've traced the problem down, and it seems to be a side-effect of
> partial linking. When the linker links multiple .o files into another
> .o file (which is later used as input to another ld command), the
> debug records inside the .mdebug section are getting corrupted. Has
> anyone run into this problem before? Any suggestions of other flags
> I can pass into the partial link that may help? I'm using the mipsel
> rpm of binutils 2.9.5-3. Or, are there any alternatives to
> partial linking that don't involve a lot of makefile manipulation?
> I've tried using the -gcoff option to remove the stab records, but that
> option does not allow the 2.4 kernel to compile under egcs 2.91.66.
So then is a binutils and not a compiler problem. What binutils are you
using? Binutils 2.8.1 which I'm still recommending (mostly to avoid
sending people into a maze of version dependencies) is getting dated and
the bug may well have been fixed in the meantime.