2008-10-17 19:33:26

by Chris Friesen

[permalink] [raw]
Subject: 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


2008-10-18 06:49:20

by Grant Likely

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

On Fri, Oct 17, 2008 at 01:32:59PM -0600, Chris Friesen wrote:
> 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.

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

2008-10-21 05:33:35

by Paul Mackerras

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

Chris Friesen writes:

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

diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index 25fe9d6..e8acee2 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -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
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b39c27e..384dca5 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -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) }

2008-10-21 08:13:51

by Stephen Rothwell

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

Hi Paulus,

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
--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


Attachments:
(No filename) (868.00 B)
(No filename) (197.00 B)
Download all attachments

2008-10-22 03:58:49

by Paul Mackerras

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

Stephen Rothwell writes:

> 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

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.
---
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b39c27e..384dca5 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -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) }

2008-10-22 15:21:27

by Hollis Blanchard

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

(Oops, resending in plain text...)

On Tue, Oct 21, 2008 at 10:58 PM, Paul Mackerras <[email protected]> wrote:
>
> Stephen Rothwell writes:
>
> > 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
>
> 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

2008-10-22 17:52:43

by Chris Friesen

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

Paul Mackerras wrote:

> 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

2008-10-22 17:53:06

by Chris Friesen

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

Hollis Blanchard wrote:

> 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

2008-10-23 00:19:37

by Josh Boyer

[permalink] [raw]
Subject: Re: build failure on powerpc with current -git

On Wed, Oct 22, 2008 at 11:50:25AM -0600, Chris Friesen wrote:
> Hollis Blanchard wrote:
>
>> 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