mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-25 20:21:07 +00:00
e6ebd2e4db
2003-01-27 Martin Schwidefsky <schwidefsky@de.ibm.com> * elf/elf.h: Add new s390 relocs. * elf/tls-macros.h: Add s390 versions. * sysdeps/s390/Versions [GLIBC_2.3] (ld): Export __tls_get_offset. * sysdeps/s390/dl-tls.h: New file. * sysdeps/s390/libc-tls.c: New file. * sysdeps/s390/s390-32/dl-machine.h (elf_machine_type_class): Add TLS relocs for class PLT. (elf_machine_rela): Handle TLS relocs. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/s390/s390-32/elf/configure.in: Add TLS check. * sysdeps/s390/s390-64/elf/configure.in: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Add support for CLONE_CHILD_*TID flags. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S: Use branch with 32 bit offset. * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error): Support USE___THREAD. Define RTLD_PRIVATE_ERRNO variant. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO variants. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: (SYSCALL_ERROR_LABEL): Move define next to SYSCALL_ERROR_HANDLER. Use direct branch to syscall_error for !PIC and PIC && !_LIBC_REENTRANT. (SYSCALL_ERROR_HANDLER): Add USE___THREAD and RTLD_PRIVATE_ERRNO variants.
38 lines
993 B
Plaintext
38 lines
993 B
Plaintext
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
|
|
# Local configure fragment for sysdeps/s390/elf.
|
|
|
|
if test "$usetls" != no; then
|
|
# Check for support of thread-local storage handling in assembler and
|
|
# linker.
|
|
AC_CACHE_CHECK(for s390 TLS support, libc_cv_390_tls, [dnl
|
|
cat > conftest.S <<\EOF
|
|
.section ".tdata", "awT", @progbits
|
|
foo: .long 25
|
|
.text
|
|
.quad foo@TLSGD
|
|
.quad foo@TLSLDM
|
|
.quad foo@DTPOFF
|
|
.quad foo@NTPOFF
|
|
.quad foo@GOTNTPOFF
|
|
.quad foo@INDNTPOFF
|
|
lg %r1,foo@GOTNTPOFF(%r12)
|
|
lg %r1,0(%r1):tls_load:foo
|
|
brasl %r14,__tls_get_offset@plt:tls_gdcall:foo
|
|
brasl %r14,__tls_get_offset@plt:tls_ldcall:foo
|
|
EOF
|
|
dnl
|
|
if AC_TRY_COMMAND(${CC-cc} -S $CFLAGS conftest.S 1>&AS_MESSAGE_LOG_FD); then
|
|
libc_cv_390_tls=yes
|
|
else
|
|
libc_cv_390_tls=no
|
|
fi
|
|
rm -f conftest*])
|
|
if test $libc_cv_390_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)
|