This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: powerpc64-linux build, problem building glibc --with-__thread

On Fri, Jan 09, 2004 at 02:56:32PM +1030, Alan Modra wrote:
> On Thu, Jan 08, 2004 at 03:52:04PM -0800, Janis Johnson wrote:
> > The big problem with the powerpc64-linux build is that the glibc build
> > fails because elf/sln fails to link when glibc is configured using
> > --with-__thread.  The message is "Not enough room for program headers:
> > (allocated 4, need 5)".
> It seems to be a bug related to Jakub's PT_GNU_STACK changes.

It was.  The trouble was that the initial section layout done for ppc64
tls optimization calculated a value for SIZEOF_HEADERS and cached it.
Later, in size_dynamic_sections, we figure out whether we need a
PT_GNU_STACK header.  If we do, then the cached value for SIZEOF_HEADERS
is wrong.

Jakub, Olaf, would you please see that this patch goes into your next
RedHat and SuSE binutils releases?

	* emultempl/ppc64elf.em (ppc_before_allocation): Clear cached

Index: ld/emultempl/ppc64elf.em
RCS file: /cvs/src/src/ld/emultempl/ppc64elf.em,v
retrieving revision 1.24
diff -u -p -r1.24 ppc64elf.em
--- ld/emultempl/ppc64elf.em	4 Nov 2003 23:11:23 -0000	1.24
+++ ld/emultempl/ppc64elf.em	9 Jan 2004 05:29:42 -0000
@@ -25,6 +25,7 @@ cat >>e${EMULATION_NAME}.c <<EOF
 #include "ldctor.h"
 #include "libbfd.h"
+#include "elf-bfd.h"
 #include "elf64-ppc.h"
 /* Fake input file for stubs.  */
@@ -117,6 +118,8 @@ ppc_before_allocation (void)
+	  /* We must not cache anything from the preliminary sizing.  */
+	  elf_tdata (output_bfd)->program_header_size = 0;
 	  lang_reset_memory_regions ();

Alan Modra
IBM OzLabs - Linux Technology Centre

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]