about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/elf/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc64/elf/configure.in')
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure.in61
1 files changed, 61 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/elf/configure.in b/sysdeps/powerpc/powerpc64/elf/configure.in
new file mode 100644
index 0000000000..98abcf0356
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/elf/configure.in
@@ -0,0 +1,61 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/powerpc64/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and
+# linker.
+AC_CACHE_CHECK(for powerpc64 TLS support, libc_cv_powerpc64_tls, [dnl
+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
+dnl
+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_powerpc64_tls=yes
+else
+  libc_cv_powerpc64_tls=no
+fi
+rm -f conftest*])
+if test $libc_cv_powerpc64_tls = yes; then
+  AC_DEFINE(HAVE_TLS_SUPPORT)
+fi
+fi
+
+dnl It is always possible to access static and hidden symbols in an
+dnl position independent way.
+AC_DEFINE(PI_STATIC_AND_HIDDEN)