# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
 # Local configure fragment for sysdeps/s390/elf.

if test "$usetls" != no; then
# Check for support of thread-local storage handling in assembler and
# linker.
{ $as_echo "$as_me:$LINENO: checking for s390 TLS support" >&5
$as_echo_n "checking for s390 TLS support... " >&6; }
if test "${libc_cv_390_tls+set}" = set; then
  $as_echo_n "(cached) " >&6
else
  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
if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
  (eval $ac_try) 2>&5
  ac_status=$?
  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
  (exit $ac_status); }; }; then
  libc_cv_390_tls=yes
else
  libc_cv_390_tls=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_390_tls" >&5
$as_echo "$libc_cv_390_tls" >&6; }
if test $libc_cv_390_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

