build failure on powerpc with current -git
The current -git fails to build on 64-bit powerpc (failure log below) .
Initially I tried using my older toolchain, when I first saw the
problem I built a new toolchain with crosstool (gcc 4.1.2 and binutils 2.16.1) and tried again but got the same problem.
2.6.27 doesn't show this problem.
Any ideas what's going on and how I can fix it?
Thanks,
Chris
LD vmlinux.o
MODPOST vmlinux.o
WARNING: modpost: Found 4 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1
/opt/crosstool/gcc-4.1.2-glibc-2.3.6/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-ld: BFD 2.16.1 internal error, aborting at /home/cfriesen/crosstool-0.43/build/powerpc64-unknown-linux-gnu/gcc-4.1.2-glibc-2.3.6/binutils-2.16.1/bfd/elflink.c line 6419 in elf_link_output_extsym
/opt/crosstool/gcc-4.1.2-glibc-2.3.6/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-ld: Please report this bug.
make[1]: *** [.tmp_vmlinux1] Error 1
make: *** [sub-make] Error 2
Quoted 8 lines · Chris Friesen
The current -git fails to build on 64-bit powerpc (failure log below) . Initially I tried using my older toolchain, when I first saw the problem I built a new toolchain with crosstool (gcc 4.1.2 and binutils 2.16.1) and tried again but got the same problem.
2.6.27 doesn't show this problem.
Any ideas what's going on and how I can fix it?
This is a know bug with binutils 2.16.1. You can work around it by either reverting commit 549e8152de8039506f69c677a4546e5427aa6ae7 or upgrading to a newer version of binutils.
Nobody has a fix for this problem yet. (it's definitely a binutils bug, but the kernel exposed it where it wasn't an issue before. I don't know if support for 2.16.1 is going to be depreciated due to this. It seems like there are still a fair few users of binutils 2.16.1)
g.
Quoted 35 lines
Thanks,
Chris
LD vmlinux.o
MODPOST vmlinux.o
WARNING: modpost: Found 4 section mismatch(es).
To see full details build your kernel with:
'makeCONFIG_DEBUG_SECTION_MISMATCH=y'GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1
/opt/crosstool/gcc-4.1.2-glibc-2.3.6/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-ld:
BFD 2.16.1 internal error, aborting at/home/cfriesen/crosstool-0.43/build/powerpc64-unknown-linux-gnu/gcc-4.1.2-glibc-2.3.6/binutils-2.16.1/bfd/elflink.cline 6419 inelf_link_output_extsym
/opt/crosstool/gcc-4.1.2-glibc-2.3.6/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-ld:
Please report this bug.make[1]: *** [.tmp_vmlinux1] Error 1
make: *** [sub-make] Error 2--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 4 lines · Chris Friesen
The current -git fails to build on 64-bit powerpc (failure log below) .
Initially I tried using my older toolchain, when I first saw the
problem I built a new toolchain with crosstool (gcc 4.1.2 and binutils 2.16.1) and tried again but got the same problem.
It's a bug in older versions of ld (including 2.16.1) that's fixed in the current version (2.18). However, this patch appears to work around the problem - at least, it let me build a 32-bit kernel with a cross-toolchain including a 2.16.1 ld. Let me know if this gets it working for you.
Paul.
arch/powerpc/boot/wrapper +2 -0
@@ -284,6 +284,8 @@ if [ -n "$dtb" ]; then if [ -n "$dts" ]; then rm $dtb fi +else + addsec $tmp /dev/null .kernel:dtb fi if [ "$platform" != "miboot" ]; then
arch/powerpc/kernel/vmlinux.lds.S +2 -0
@@ -187,6 +187,7 @@ SECTIONS *(.machine.desc) __machine_desc_end = . ; } +#ifdef CONFIG_RELOCATABLE . = ALIGN(8); .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
@@ -202,6 +203,7 @@ SECTIONS __rela_dyn_start = .; *(.rela*) } +#endif /* Fake ELF header containing RPA note; for addnote */ .fakeelf : AT(ADDR(.fakeelf) - LOAD_OFFSET) { *(.fakeelf) }
Hi Paulus,
Quoted 6 lines · On Tue, 21 Oct 2008 16:33:10 +1100 Paul Mackerras <[email protected]> wrote:
It's a bug in older versions of ld (including 2.16.1) that's fixed in the current version (2.18). However, this patch appears to work around the problem - at least, it let me build a 32-bit kernel with a cross-toolchain including a 2.16.1 ld. Let me know if this gets it working for you.
With that patch applied I got these errors for a powerpc ppc64_defconfig build (linux-next).
/usr/bin/objcopy: Warning: '/dev/null' is not an ordinary file make[2]: *** [arch/powerpc/boot/zImage.pmac] Error 1 make[2]: *** Waiting for unfinished jobs.... /usr/bin/objcopy: Warning: '/dev/null' is not an ordinary file make[2]: *** [arch/powerpc/boot/zImage.pseries] Error 1
Signature · 3 lines
Cheers, Stephen Rothwell [email protected] http://www.canb.auug.org.au/~sfr/
Quoted 8 lines · Stephen Rothwell
Quoted 6 lines · On Tue, 21 Oct 2008 16:33:10 +1100 Paul Mackerras <[email protected]> wrote:
It's a bug in older versions of ld (including 2.16.1) that's fixed in the current version (2.18). However, this patch appears to work around the problem - at least, it let me build a 32-bit kernel with a cross-toolchain including a 2.16.1 ld. Let me know if this gets it working for you.
Quoted 4 lines
With that patch applied I got these errors for a powerpc
ppc64_defconfigbuild (linux-next).
/usr/bin/objcopy: Warning: '/dev/null' is not an ordinary file
Hmmm, so do I, and in fact the arch/powerpc/boot/wrapper change now seems to be unnecessary with my cross-compile setup (which has ld 2.16.1), whereas yesterday I'm sure it got errors. Weird.
Chris, could you try just the following change (my previous patch without the arch/powerpc/boot/wrapper change) and let me know if it fixes things with the ld you use?
Paul.
---
arch/powerpc/kernel/vmlinux.lds.S +2 -0
@@ -187,6 +187,7 @@ SECTIONS *(.machine.desc) __machine_desc_end = . ; } +#ifdef CONFIG_RELOCATABLE . = ALIGN(8); .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) }
@@ -202,6 +203,7 @@ SECTIONS __rela_dyn_start = .; *(.rela*) } +#endif /* Fake ELF header containing RPA note; for addnote */ .fakeelf : AT(ADDR(.fakeelf) - LOAD_OFFSET) { *(.fakeelf) }
Quoted 16 lines · Paul Mackerras
Quoted 1 line · Stephen Rothwell
On Tue, 21 Oct 2008 16:33:10 +1100 Paul Mackerras <[email protected]>
Quoted 11 lines · wrote:
Quoted 6 lines
It's a bug in older versions of ld (including 2.16.1) that's fixed in the current version (2.18). However, this patch appears to work around the problem - at least, it let me build a 32-bit kernel with a cross-toolchain including a 2.16.1 ld. Let me know if this gets it working for you.
With that patch applied I got these errors for a powerpc
ppc64_defconfigbuild (linux-next).
/usr/bin/objcopy: Warning: '/dev/null' is not an ordinary file
Quoted 8 lines
Hmmm, so do I, and in fact the
arch/powerpc/boot/wrapperchange now seems to be unnecessary with my cross-compile setup (which has ld 2.16.1), whereas yesterday I'm sure it got errors. Weird.Chris, could you try just the following change (my previous patch without the
arch/powerpc/boot/wrapperchange) and let me know if it fixes things with the ld you use?
Works for me.
binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)
-Hollis
Quoted 1 line · Hollis Blanchard
binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)
I was wondering about that....wasted a bunch of time trying to build something more recent.
Chris
Quoted 7 lines · Chris Friesen
Quoted 2 lines · Hollis Blanchard
binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)
I was wondering about that....wasted a bunch of time trying to build something more recent.
I built binutils 2.18 for ppc, ppc no-float, ppc64, mips, and i386 yesterday. It worked fine...
josh
(Oops, resending in plain text...)
Quoted 16 lines · Paul Mackerras
Quoted 8 lines · Stephen Rothwell
Quoted 6 lines · On Tue, 21 Oct 2008 16:33:10 +1100 Paul Mackerras <[email protected]> wrote:
It's a bug in older versions of ld (including 2.16.1) that's fixed in the current version (2.18). However, this patch appears to work around the problem - at least, it let me build a 32-bit kernel with a cross-toolchain including a 2.16.1 ld. Let me know if this gets it working for you.
Quoted 4 lines
With that patch applied I got these errors for a powerpc
ppc64_defconfigbuild (linux-next).
/usr/bin/objcopy: Warning: '/dev/null' is not an ordinary file
Quoted 7 lines
Hmmm, so do I, and in fact the
arch/powerpc/boot/wrapperchange now seems to be unnecessary with my cross-compile setup (which has ld 2.16.1), whereas yesterday I'm sure it got errors. Weird.Chris, could you try just the following change (my previous patch without the
arch/powerpc/boot/wrapperchange) and let me know if it fixes things with the ld you use?
Works for me.
binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)
-Hollis
Quoted 3 lines · Paul Mackerras
Chris, could you try just the following change (my previous patch without the
arch/powerpc/boot/wrapperchange) and let me know if it fixes things with the ld you use?
The build completes with no errors. Haven't actually booted it though.
Gets my vote...
Chris