aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/ChangeLog5
-rw-r--r--config/mh-ppc-darwin5
-rw-r--r--config/tls.m410
3 files changed, 16 insertions, 4 deletions
diff --git a/config/ChangeLog b/config/ChangeLog
index fda6f95..88b688c 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-04 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * tls.m4 (GCC_CHECK_TLS): Do not test TLS with static linking
+ if static linking doesn't even work.
+
2006-11-13 Daniel Jacobowitz <dan@codesourcery.com>
* tls.m4 (GCC_CHECK_TLS): Fall back to a link test.
diff --git a/config/mh-ppc-darwin b/config/mh-ppc-darwin
index 44fd620..231415e 100644
--- a/config/mh-ppc-darwin
+++ b/config/mh-ppc-darwin
@@ -4,3 +4,8 @@
BOOT_CFLAGS=-g -O2 -mdynamic-no-pic
+# The spiffy cpp-precomp chokes on some legitimate constructs in GCC
+# sources; use -no-cpp-precomp to get to GNU cpp.
+# Apple's GCC has bugs in designated initializer handling, so disable
+# that too.
+STAGE1_CFLAGS += -no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0
diff --git a/config/tls.m4 b/config/tls.m4
index b66b6d7..41f11ab 100644
--- a/config/tls.m4
+++ b/config/tls.m4
@@ -5,12 +5,14 @@ AC_DEFUN([GCC_CHECK_TLS], [
have_tls, [
AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
[dnl If the test case passed with dynamic linking, try again with
- dnl static linking. This fails at least with some older Red Hat
- dnl releases.
+ dnl static linking, but only if static linking is supported (not
+ dnl on Solaris 10). This fails with some older Red Hat releases.
save_LDFLAGS="$LDFLAGS"
LDFLAGS="-static $LDFLAGS"
- AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
- [have_tls=yes], [have_tls=no], [])
+ AC_LINK_IFELSE([int main() { return 0; }],
+ AC_RUN_IFELSE([__thread int a; int b; int main() { return a = b; }],
+ [have_tls=yes], [have_tls=no],[]),
+ [have_tls=yes])
LDFLAGS="$save_LDFLAGS"],
[have_tls=no],
[AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],