Skip to contentSkip to conversation

build failure on powerpc with current -git

DISCUSSION Chris Friesen 7 participants 10 messages Oct 17, 2008 – Oct 23, 2008 PowerPC

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
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:
'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

--
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/

#2 lore raw
In reply to Chris Friesen
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
index 25fe9d6..e8acee2 100755
@@ -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
index b39c27e..384dca5 100644
@@ -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) }
#3 lore raw

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/
#4 lore raw
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_defconfig build (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
index b39c27e..384dca5 100644
@@ -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) }
#5 lore raw
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_defconfig build (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/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?

Works for me.

binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)

-Hollis

#6 lore raw
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

#7 lore raw
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

#8 lore raw
In reply to Paul Mackerras

(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_defconfig build (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/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?

Works for me.

binutils 2.16.1 is the most recent binutils that will build with crosstool, so IMHO it's worth supporting. :)

-Hollis

#9 lore raw
In reply to Paul Mackerras
Quoted 3 lines · Paul Mackerras

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?

The build completes with no errors. Haven't actually booted it though.

Gets my vote...

Chris