about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/configure
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc64/configure')
-rw-r--r--sysdeps/powerpc/powerpc64/configure64
1 files changed, 64 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
index 7cff76141b..762ae4a25d 100644
--- a/sysdeps/powerpc/powerpc64/configure
+++ b/sysdeps/powerpc/powerpc64/configure
@@ -144,3 +144,67 @@ if test x$libc_cv_overlapping_opd = xyes; then
   $as_echo "#define USE_PPC64_OVERLAPPING_OPD 1" >>confdefs.h
 
 fi
+
+# Check for support of thread-local storage handling in assembler and
+# linker.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for powerpc64 TLS support" >&5
+$as_echo_n "checking for powerpc64 TLS support... " >&6; }
+if ${libc_cv_powerpc64_tls+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.s <<\EOF
+	.section ".tdata","awT",@progbits
+x:      .quad   1
+x1:     .quad   1
+x2:     .quad   1
+x3:     .quad   1
+x4:     .long   1
+	.section ".toc","aw"
+.LC0:
+	.quad	x@dtpmod
+	.quad	x@dtprel
+.LC1:
+	.quad	x1@dtpmod
+	.quad	0
+.LC2:
+	.quad	x@tprel
+	.text
+	addi    3,2,x@got@tlsgd
+	addi    3,2,.LC0@toc
+	addi    3,2,x1@got@tlsld
+	addi    9,3,x1@dtprel
+	addis   9,3,x2@dtprel@ha
+	addi    9,9,x2@dtprel@l
+	ld      9,x3@got@dtprel(2)
+	addi    3,2,.LC0@toc
+	lwz     0,x1@dtprel(3)
+	ld      0,x1@dtprel(3)
+	addis   9,3,x2@dtprel@ha
+	lwz     0,x2@dtprel@l(9)
+	ld      0,x2@dtprel@l(9)
+	ld      9,x3@got@dtprel(2)
+	ld      9,x@got@tprel(2)
+	add     9,9,x@tls
+	ld      9,.LC2@toc(2)
+	add     9,9,.LC2@tls
+	addi    9,13,x1@tprel
+	addis   9,13,x2@tprel@ha
+	addi    9,9,x2@tprel@l
+EOF
+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+  libc_cv_powerpc64_tls=yes
+else
+  libc_cv_powerpc64_tls=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_powerpc64_tls" >&5
+$as_echo "$libc_cv_powerpc64_tls" >&6; }
+if test $libc_cv_powerpc64_tls = no; then
+  as_fn_error $? "the assembler must support TLS" "$LINENO" 5
+fi