patches/glibc/2.6.1/220-cross-posix_makefile.patch
author Johannes Stezenbach <js@sig21.net>
Thu Jul 29 19:47:16 2010 +0200 (2010-07-29)
changeset 2045 fdaa6c7f6dea
permissions -rw-r--r--
cc/gcc: add option to compile against static libstdc++, for gcc-4.4 and newer

Idea and know-how taken from CodeSourcery build script.

Normal build:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb77f3000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76e8000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75a1000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb757a000)
/lib/ld-linux.so.2 (0xb77f4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb755c000)

CC_STATIC_LIBSTDCXX=y:
$ ldd arm-unknown-linux-uclibcgnueabi-gcc
linux-gate.so.1 => (0xb7843000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb76e6000)
/lib/ld-linux.so.2 (0xb7844000)

I made CC_STATIC_LIBSTDCXX default=y since I think
it is always desirable.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
yann@1136
     1
On 20090111.1151+0100, Thomas Jourdan <tjourdan@neuf.fr> wrote:
yann@1136
     2
yann@1136
     3
  I'm still working on the solaris port an I have the same issue here.
yann@1136
     4
  While trying to build the i686-nptl-linux-gnu toolchain under
yann@1136
     5
  OpenSolaris, the problems appears during the make install rule of the
yann@1136
     6
  libc function.
yann@1136
     7
yann@1136
     8
  The problem is that solaris tries to execute ld-linux.so.2, which is an
yann@1136
     9
  elf 32 bits dyn lib, and it fails with a memory fault, not a "cannot
yann@1136
    10
  execute binary file". Hence the build stops on this error.
yann@1136
    11
yann@1136
    12
And on 20090111.1339+0100, he replied with:
yann@1136
    13
yann@1136
    14
  After digging a little, the problem comes from the
yann@1136
    15
  glibc-2.6.1/posix/Makefile. It has been solved starting from glibc 2.7
yann@1136
    16
  so I extracted a patch for glibc 2.6.1.
yann@1136
    17
yann@1136
    18
--- glibc-2.6.1/posix/Makefile	2007-04-04 01:28:20.000000000 +0200
yann@1136
    19
+++ glibc-2.7/posix/Makefile	2007-09-12 01:57:22.000000000 +0200
yann@1136
    20
@@ -98,7 +98,7 @@
yann@1136
    21
 endif
yann@1136
    22
 others		:= getconf
yann@1136
    23
 install-bin	:= getconf
yann@1136
    24
-install-others	:= $(inst_libexecdir)/getconf
yann@1136
    25
+install-others-programs	:= $(inst_libexecdir)/getconf
yann@1136
    26
 
yann@1136
    27
 before-compile	:= testcases.h ptestcases.h
yann@1136
    28
 
yann@1136
    29
@@ -110,7 +110,7 @@
yann@1136
    30
 	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
yann@1136
    31
 	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
yann@1136
    32
 	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
yann@1136
    33
-	     tst-vfork3-mem tst-vfork3.mtrace
yann@1136
    34
+	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist
yann@1136
    35
 
yann@1136
    36
 include ../Rules
yann@1136
    37
 
yann@1136
    38
@@ -291,12 +291,20 @@
yann@1136
    39
 $(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out
yann@1136
    40
 	$(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@
yann@1136
    41
 
yann@1136
    42
-$(inst_libexecdir)/getconf: $(objpfx)getconf FORCE
yann@1136
    43
+$(inst_libexecdir)/getconf: $(inst_bindir)/getconf \
yann@1136
    44
+			    $(objpfx)getconf.speclist FORCE
yann@1136
    45
 	$(addprefix $(..)./scripts/mkinstalldirs ,\
yann@1136
    46
 		    $(filter-out $(wildcard $@),$@))
yann@1136
    47
-	for spec in `LC_ALL=C GETCONF_DIR=/dev/null \
yann@1136
    48
-		     $(run-program-prefix) $< \
yann@1136
    49
-		     _POSIX_V6_WIDTH_RESTRICTED_ENVS`; do \
yann@1136
    50
-		$(INSTALL_PROGRAM) $< $@/$$spec.new; \
yann@1136
    51
-		mv -f $@/$$spec.new $@/$$spec; \
yann@1136
    52
-	done
yann@1136
    53
+	while read spec; do \
yann@1136
    54
+	  ln -f $< $@/$$spec.new || $(INSTALL_PROGRAM) $< $@/$$spec.new; \
yann@1136
    55
+	  mv -f $@/$$spec.new $@/$$spec; \
yann@1136
    56
+	done < $(objpfx)getconf.speclist
yann@1136
    57
+
yann@1136
    58
+$(objpfx)getconf.speclist: $(objpfx)getconf
yann@1136
    59
+ifeq (no,$(cross-compiling))
yann@1136
    60
+	LC_ALL=C GETCONF_DIR=/dev/null \
yann@1136
    61
+	$(run-program-prefix) $< _POSIX_V6_WIDTH_RESTRICTED_ENVS > $@.new
yann@1136
    62
+else
yann@1136
    63
+	> $@.new
yann@1136
    64
+endif
yann@1136
    65
+	mv -f $@.new $@