# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
 # Local configure fragment for sysdeps/powerpc32/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 powerpc32 TLS support" >&5
$as_echo_n "checking for powerpc32 TLS support... " >&6; }
if test "${libc_cv_powerpc32_tls+set}" = set; then
  $as_echo_n "(cached) " >&6
else
  cat > conftest.s <<\EOF
	.section ".tdata","awT",@progbits
x:	.long	1
x1:	.long	1
x2:	.long	1
	.text
	addi	3,31,x@got@tlsgd
	addi	3,31,x1@got@tlsld
	addi	9,3,x1@dtprel
	addis	9,3,x2@dtprel@ha
	addi	9,9,x2@dtprel@l
	lwz	0,x1@dtprel(3)
	addis	9,3,x2@dtprel@ha
	lwz	0,x2@dtprel@l(9)
	lwz	9,x3@got@tprel(31)
	add	9,9,x@tls
	addi	9,2,x1@tprel
	addis	9,2,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=$?
  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
  (exit $ac_status); }; }; then
  libc_cv_powerpc32_tls=yes
else
  libc_cv_powerpc32_tls=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_powerpc32_tls" >&5
$as_echo "$libc_cv_powerpc32_tls" >&6; }
if test $libc_cv_powerpc32_tls = yes; then
  cat >>confdefs.h <<\_ACEOF
#define HAVE_TLS_SUPPORT 1
_ACEOF

fi
fi
