Re: binutils 2.18.50.0.8 frv build error

From: Adrian Bunk
Date: Tue Jul 15 2008 - 09:48:04 EST


On Tue, Jul 15, 2008 at 06:20:05AM -0700, H.J. Lu wrote:
> On Tue, Jul 15, 2008 at 03:13:27PM +0300, Adrian Bunk wrote:
> > Toolchain:
> > - gcc 4.3.1
> > - binutils 2.18.50.0.7 and 2.18.50.0.8
> > - configured for frv-linux
> > - kernel 2.6.26
> >
> > Builds fine when using binutils 2.18.50.0.7,
> > but fails as follows with binutils 2.18.50.0.8:
> >
> > <-- snip -->
> >
> > ...
> > HOSTCC scripts/kallsyms
> > CC init/main.o
> > CHK include/linux/compile.h
> > UPD include/linux/compile.h
> > CC init/version.o
> > CC init/do_mounts.o
> > LD init/mounts.o
> > CC init/noinitramfs.o
> > LD init/built-in.o
> > frv-linux-ld: init/mounts.o: compiled with -fpic and linked with modules that use non-pic relocations
> > frv-linux-ld: failed to merge target specific data of file init/mounts.o
> > make[2]: *** [init/built-in.o] Error 1
> >
> > <-- snip -->
> >
> > Complete verbose log below.
> >
> > Any hints what's going wrong?
> >
> > cu
> > Adrian
> >
> >
>
> ...
>
> > frv-linux-ld -r -o init/built-in.o init/main.o init/version.o init/mounts.o init/noinitramfs.o
> > frv-linux-ld: init/mounts.o: compiled with -fpic and linked with modules that use non-pic relocations
> > frv-linux-ld: failed to merge target specific data of file init/mounts.o
> > make[1]: *** [init/built-in.o] Error 1
> > make: *** [init] Error 2
>
> This regression was introduced between 2008-05-02 10:10am and
> 2008-07-09 5:45pm PDT. Does ld from binutils 2.18.50.0.7 work
> on the same init/main.o init/version.o init/mounts.o
> init/noinitramfs.o? If yes, please open a bug report at
>
> http://www.sourceware.org/bugzilla/

No, it does not work with these .o files.

> with those .o files. If not, please find out why.

Tried it the other way round:
- compiled with 2.18.50.0.7.
- then changed binutils to 2.18.50.0.8

Works:
frv-linux-ld -r -o init/built-in.o init/main.o init/version.o init/mounts.o init/noinitramfs.o

Fails:
frv-linux-ld -r -o init/mounts.o init/do_mounts.o
frv-linux-ld -r -o init/built-in.o init/main.o init/version.o init/mounts.o init/noinitramfs.o


I did an "frv-linux-objdump -Dx" on the init/mounts.o files generated
with both binutils versions, and the diff is:


--- working 2008-07-15 16:34:49.000000000 +0300
+++ broken 2008-07-15 16:34:40.000000000 +0300
architecture: fr450, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000
-private flags = 0x800020d: -mcpu=fr450 -mgpr-32 -msoft-float non-pic relocations
+private flags = 0x800030d: -mcpu=fr450 -mgpr-32 -msoft-float -fpic non-pic relocations

Sections:
Idx Name Size VMA LMA File off Algn


Is this an ld bug?


> Thanks.
>
> H.J.

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/