Kernel build issues with upstream binutils
Nicholas Piggin
npiggin at gmail.com
Mon Nov 28 00:35:05 AEDT 2016
On Sun, 27 Nov 2016 09:04:30 +1100
Anton Blanchard <anton at samba.org> wrote:
> Hi,
>
> A recent binutils commit:
>
> https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=1a9ccd70f9a75dc6b48d340059f28ef3550c107b
>
> has broken kernel builds:
>
> /home/anton/gcc.install/bin/ld: arch/powerpc/boot/zImage.pseries: Not enough room for program headers, try linking with -N
> /home/anton/gcc.install/bin/ld: final link failed: Bad value
>
> I guess we have an issue with our linker script.
We may need something like this (not boot tested). I'll have a better look
tomorrow.
---
arch/powerpc/boot/zImage.lds.S | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/boot/zImage.lds.S b/arch/powerpc/boot/zImage.lds.S
index 861e721..8963544 100644
--- a/arch/powerpc/boot/zImage.lds.S
+++ b/arch/powerpc/boot/zImage.lds.S
@@ -7,6 +7,13 @@ OUTPUT_ARCH(powerpc:common)
#endif
ENTRY(_zimage_start)
EXTERN(_zimage_start)
+
+PHDRS
+{
+ text PT_LOAD FLAGS(5); /* R_E */
+ data PT_LOAD FLAGS(6); /* RW_ */
+}
+
SECTIONS
{
.text :
@@ -15,7 +22,7 @@ SECTIONS
*(.text)
*(.fixup)
_etext = .;
- }
+ } :text
. = ALIGN(4096);
.data :
{
@@ -25,7 +32,7 @@ SECTIONS
#ifndef CONFIG_PPC64_BOOT_WRAPPER
*(.got2)
#endif
- }
+ } :data
.dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) }
.dynamic :
@@ -34,7 +41,6 @@ SECTIONS
*(.dynamic)
}
.hash : { *(.hash) }
- .interp : { *(.interp) }
.rela.dyn :
{
#ifdef CONFIG_PPC64_BOOT_WRAPPER
@@ -86,4 +92,9 @@ SECTIONS
*(COMMON)
_end = . ;
}
+
+ /DISCARD/ :
+ {
+ *(.interp)
+ }
}
--
2.10.2
More information about the Linuxppc-dev
mailing list