# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
 # Local configure fragment for sysdeps/i386/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 i386 TLS support" >&5
$as_echo_n "checking for i386 TLS support... " >&6; }
if test "${libc_cv_386_tls+set}" = set; then
  $as_echo_n "(cached) " >&6
else
  cat > conftest.s <<\EOF
	.section ".tdata", "awT", @progbits
	.globl foo
foo:	.long	1
	.section ".tbss", "awT", @nobits
	.globl bar
bar:	.skip	4
	.text
baz:	leal	bar@TLSLDM(%ebx), %eax
	leal	bar@DTPOFF(%eax), %edx
	subl	foo@GOTTPOFF(%edx), %eax
	subl	$bar@TPOFF, %eax
	movl	foo@GOTNTPOFF(%edx), %ecx
	movl	%gs:(%ecx), %eax
	movl	%gs:bar@NTPOFF, %eax
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=$?
  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
  (exit $ac_status); }; }; then
  libc_cv_386_tls=yes
else
  libc_cv_386_tls=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_386_tls" >&5
$as_echo "$libc_cv_386_tls" >&6; }
if test $libc_cv_386_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

