linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@c-s.fr>
To: Michael Ellerman <mpe@ellerman.id.au>,
	Joel Stanley <joel@jms.id.au>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] powerpc: vmlinux.lds: Drop Binutils 2.18 workarounds
Date: Tue, 26 Mar 2019 09:08:13 +0100	[thread overview]
Message-ID: <197cd8df-11c4-0ff9-f35b-e708f712b97c@c-s.fr> (raw)
In-Reply-To: <874l7qpi7l.fsf@concordia.ellerman.id.au>



Le 26/03/2019 à 01:55, Michael Ellerman a écrit :
> Joel Stanley <joel@jms.id.au> writes:
>> Segher added some workarounds for GCC 4.2 and bintuils 2.18. We now set
>> 4.6 and 2.20 as the minimum, so they can be dropped.
>>
>> This is mostly a revert of c69cccc95fe4 ("powerpc: Fix build bug with
>> binutils < 2.18 and GCC < 4.2").
>>
>> Signed-off-by: Joel Stanley <joel@jms.id.au>
>> ---
>>   arch/powerpc/kernel/vmlinux.lds.S | 35 ++++---------------------------
>>   1 file changed, 4 insertions(+), 31 deletions(-)
> 
> Seems this breaks some toolchains, at least the one from kernel.org:
> 
>    /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: .tmp_vmlinux1: Not enough room for program headers, try linking with -N
>    /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld: final link failed: Bad value
>    make[1]: *** [/kisskb/src/Makefile:1024: vmlinux] Error 1
> 
> http://kisskb.ellerman.id.au/kisskb/buildresult/13743374/
> 
> Not sure why.
> 
> That's binutils 2.30.
> 

ld doc says:

6586 @cindex not enough room for program headers
6587 @cindex program headers, not enough room
6588 When producing an ELF output file, if the linker script uses the
6589 @code{SIZEOF_HEADERS} builtin function, the linker must compute the
6590 number of program headers before it has determined all the section
6591 addresses and sizes.  If the linker later discovers that it needs
6592 additional program headers, it will report an error @samp{not enough
6593 room for program headers}.  To avoid this error, you must avoid using
6594 the @code{SIZEOF_HEADERS} function, or you must rework your linker
6595 script to avoid forcing the linker to use additional program 
headers, or
6596 you must define the program headers yourself using the @code{PHDRS}
6597 command (@pxref{PHDRS}).
6598 @end table


What about just removing the dummy section, and keeping everything else ? :

diff --git a/arch/powerpc/kernel/vmlinux.lds.S 
b/arch/powerpc/kernel/vmlinux.lds.S
index 060a1acd7c6d..511bff8e4a8f 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -20,20 +20,6 @@ ENTRY(_stext)
  PHDRS {
  	kernel PT_LOAD FLAGS(7); /* RWX */
  	notes PT_NOTE FLAGS(0);
-	dummy PT_NOTE FLAGS(0);
-
-	/* binutils < 2.18 has a bug that makes it misbehave when taking an
-	   ELF file with all segments at load address 0 as input.  This
-	   happens when running "strip" on vmlinux, because of the AT() magic
-	   in this linker script.  People using GCC >= 4.2 won't run into
-	   this problem, because the "build-id" support will put some data
-	   into the "notes" segment (at a non-zero load address).
-
-	   To work around this, we force some data into both the "dummy"
-	   segment and the kernel segment, so the dummy segment will get a
-	   non-zero load address.  It's not enough to always create the
-	   "notes" segment, since if nothing gets assigned to it, its load
-	   address will be zero.  */
  }

  #ifdef CONFIG_PPC64
@@ -179,14 +165,6 @@ SECTIONS

  	NOTES :kernel :notes

-	/* The dummy segment contents for the bug workaround mentioned above
-	   near PHDRS.  */
-	.dummy : AT(ADDR(.dummy) - LOAD_OFFSET) {
-		LONG(0)
-		LONG(0)
-		LONG(0)
-	} :kernel :dummy
-
  /*
   * Init sections discarded at runtime
   */


Christophe

      parent reply	other threads:[~2019-03-26  8:09 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-21  0:32 [PATCH] powerpc: vmlinux.lds: Drop Binutils 2.18 workarounds Joel Stanley
2019-03-21 23:34 ` Segher Boessenkool
2019-03-22  0:22   ` Michael Ellerman
2019-03-26  0:55 ` Michael Ellerman
2019-03-26  7:55   ` Christophe Leroy
2019-03-26 18:19     ` Segher Boessenkool
2019-03-26 19:28       ` Christophe Leroy
2019-03-26 20:12         ` Segher Boessenkool
2019-03-26 22:29           ` Segher Boessenkool
2019-03-26 22:59             ` Segher Boessenkool
2019-03-27  6:40             ` Christophe Leroy
2019-03-27 12:47               ` Segher Boessenkool
2019-03-27 18:21                 ` Segher Boessenkool
2019-03-28  6:19                   ` Christophe Leroy
2019-03-28 15:11                     ` Segher Boessenkool
2019-03-27  8:56           ` Christophe Leroy
2019-03-27  9:09             ` Christophe Leroy
2019-03-26  8:08   ` Christophe Leroy [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=197cd8df-11c4-0ff9-f35b-e708f712b97c@c-s.fr \
    --to=christophe.leroy@c-s.fr \
    --cc=joel@jms.id.au \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).