about summary refs log tree commit diff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-02-25 23:27:06 +0000
committerRoland McGrath <roland@gnu.org>2003-02-25 23:27:06 +0000
commitfec417190420a427bec2340853f42051da251b65 (patch)
tree2a346cb4f4a9d498de755502484a3b4937df79ec /sysdeps/powerpc
parent3c2a3b41063d5f18d45cbc3039c8faf6ef813175 (diff)
downloadglibc-fec417190420a427bec2340853f42051da251b65.tar.gz
glibc-fec417190420a427bec2340853f42051da251b65.tar.xz
glibc-fec417190420a427bec2340853f42051da251b65.zip
2003-02-25 Steven Munroe <sjmunroe@us.ibm.com>
        * elf/elf.h: Add new R_PPC64_* relocs for TLS.
        * elf/tls-macros.h [__powerpc64__]
        (TLS_LE, TLS_IE, TLS_LD, TLS_GD): Define.
	* sysdeps/powerpc/powerpc64/elf/configure.in: New file.
	* sysdeps/powerpc/powerpc64/elf/configure: New file (generated).

        * sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
	Do DL_SYSDEP_OSCHECK here, matching 2002-12-01 change to generic file.
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure76
-rw-r--r--sysdeps/powerpc/powerpc64/elf/configure.in61
2 files changed, 137 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/elf/configure b/sysdeps/powerpc/powerpc64/elf/configure
new file mode 100644
index 0000000000..22aa75f995
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/elf/configure
@@ -0,0 +1,76 @@
+# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/powerpc64/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and
+# linker.
+echo "$as_me:$LINENO: checking for powerpc64 TLS support" >&5
+echo $ECHO_N "checking for powerpc64 TLS support... $ECHO_C" >&6
+if test "${libc_cv_powerpc64_tls+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  libc_cv_powerpc64_tls=yes
+else
+  libc_cv_powerpc64_tls=no
+fi
+rm -f conftest*
+fi
+echo "$as_me:$LINENO: result: $libc_cv_powerpc64_tls" >&5
+echo "${ECHO_T}$libc_cv_powerpc64_tls" >&6
+if test $libc_cv_powerpc64_tls = yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_TLS_SUPPORT 1
+_ACEOF
+
+fi
+fi
+
+cat >>confdefs.h <<\_ACEOF
+#define PI_STATIC_AND_HIDDEN 1
+_ACEOF
+
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)