patches/glibc/2.9/430-2.7-cross-compile-nptl.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 22:43:07 2011 +0200 (2011-07-17)
changeset 2893 a8a65758664f
parent 1201 c9967a6e3b25
permissions -rw-r--r--
cc/gcc: do not use the core pass-2 to build the baremetal compiler

In case we build a baremetal compiler, use the standard passes:
- core_cc is used to build the C library;
- as such, it is meant to run on build, not host;
- the final compiler is meant to run on host;

As the current final compiler step can not build a baremetal compiler,
call the core backend from the final step.

NB: Currently, newlib is built during the start_files pass, so we have
to have a core compiler by then... Once we can build the baremetal
compiler from the final cc step, then we can move the newlib build to
the proper step, and then get rid of the core pass-1 static compiler...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1201
     1
Original patch from: gentoo/src/patchsets/glibc/2.9/5070_all_glibc-2.7-cross-compile-nptl.patch
yann@1201
     2
yann@1201
     3
-= BEGIN original header =-
yann@1201
     4
A little hack for cross-compiling NPTL
yann@1201
     5
yann@1201
     6
http://sourceware.org/ml/libc-alpha/2005-02/msg00043.html
yann@1201
     7
yann@1201
     8
-= END original header =-
yann@1201
     9
yann@1201
    10
diff -durN glibc-2_9.orig/nptl/sysdeps/pthread/configure glibc-2_9/nptl/sysdeps/pthread/configure
yann@1201
    11
--- glibc-2_9.orig/nptl/sysdeps/pthread/configure	2007-10-17 00:24:30.000000000 +0200
yann@1201
    12
+++ glibc-2_9/nptl/sysdeps/pthread/configure	2009-02-02 22:01:28.000000000 +0100
yann@1201
    13
@@ -78,6 +78,10 @@
yann@1201
    14
 fi
yann@1201
    15
 { echo "$as_me:$LINENO: result: $libc_cv_forced_unwind" >&5
yann@1201
    16
 echo "${ECHO_T}$libc_cv_forced_unwind" >&6; }
yann@1201
    17
+if test $libc_cv_forced_unwind = no -a $build_cpu != $host_cpu; then
yann@1201
    18
+  echo "$as_me:$LINENO: forcing libc_cv_forced_unwind = yes for cross-compile"
yann@1201
    19
+  libc_cv_forced_unwind=yes
yann@1201
    20
+fi
yann@1201
    21
 if test $libc_cv_forced_unwind = yes; then
yann@1201
    22
   cat >>confdefs.h <<\_ACEOF
yann@1201
    23
 #define HAVE_FORCED_UNWIND 1
yann@1201
    24
@@ -141,6 +145,10 @@
yann@1201
    25
 { echo "$as_me:$LINENO: result: $libc_cv_c_cleanup" >&5
yann@1201
    26
 echo "${ECHO_T}$libc_cv_c_cleanup" >&6; }
yann@1201
    27
   CFLAGS="$old_CFLAGS"
yann@1201
    28
+  if test $libc_cv_c_cleanup = no -a $build_cpu != $host_cpu; then
yann@1201
    29
+    echo "$as_me:$LINENO: result: forcing libc_cv_c_cleanup = yes for cross-compile"
yann@1201
    30
+    libc_cv_c_cleanup=yes
yann@1201
    31
+  fi
yann@1201
    32
   if test $libc_cv_c_cleanup = no; then
yann@1201
    33
     { { echo "$as_me:$LINENO: error: the compiler must support C cleanup handling" >&5
yann@1201
    34
 echo "$as_me: error: the compiler must support C cleanup handling" >&2;}
yann@1201
    35
diff -durN glibc-2_9.orig/nptl/sysdeps/pthread/configure.in glibc-2_9/nptl/sysdeps/pthread/configure.in
yann@1201
    36
--- glibc-2_9.orig/nptl/sysdeps/pthread/configure.in	2003-12-03 07:50:01.000000000 +0100
yann@1201
    37
+++ glibc-2_9/nptl/sysdeps/pthread/configure.in	2009-02-02 22:01:28.000000000 +0100
yann@1201
    38
@@ -28,6 +28,9 @@
yann@1201
    39
 struct _Unwind_Context *context;
yann@1201
    40
 _Unwind_GetCFA (context)],
yann@1201
    41
 libc_cv_forced_unwind=yes, libc_cv_forced_unwind=no)])
yann@1201
    42
+if test $libc_cv_forced_unwind = no -a $build_cpu != $host_cpu; then
yann@1201
    43
+  libc_cv_forced_unwind=yes
yann@1201
    44
+fi
yann@1201
    45
 if test $libc_cv_forced_unwind = yes; then
yann@1201
    46
   AC_DEFINE(HAVE_FORCED_UNWIND)
yann@1201
    47
 dnl Check for C cleanup handling.
yann@1201
    48
@@ -41,6 +44,9 @@
yann@1201
    49
   puts ("test")],
yann@1201
    50
 libc_cv_c_cleanup=yes, libc_cv_c_cleanup=no)])
yann@1201
    51
   CFLAGS="$old_CFLAGS"
yann@1201
    52
+  if test $libc_cv_c_cleanup = no -a $build_cpu != $host_cpu; then
yann@1201
    53
+    libc_cv_c_cleanup=yes
yann@1201
    54
+  fi
yann@1201
    55
   if test $libc_cv_c_cleanup = no; then
yann@1201
    56
     AC_MSG_ERROR([the compiler must support C cleanup handling])
yann@1201
    57
   fi