# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
 # Local configure fragment for sysdeps/unix/sysv/linux/i386.

# Check if CFLAGS allows compiler to use ebp register in inline assembly.

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler flags allows ebp in inline assembly" >&5
$as_echo_n "checking if compiler flags allows ebp in inline assembly... " >&6; }
if ${libc_cv_can_use_register_asm_ebp+:} false; then :
  $as_echo_n "(cached) " >&6
else

cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

    void foo (int i)
    {
      register int reg asm ("ebp") = i;
      asm ("# %0" : : "r" (reg));
    }
int
main ()
{

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  libc_cv_can_use_register_asm_ebp=yes
else
  libc_cv_can_use_register_asm_ebp=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_can_use_register_asm_ebp" >&5
$as_echo "$libc_cv_can_use_register_asm_ebp" >&6; }
if test $libc_cv_can_use_register_asm_ebp = yes; then
  $as_echo "#define CAN_USE_REGISTER_ASM_EBP 1" >>confdefs.h

fi

libc_cv_gcc_unwind_find_fde=yes
ldd_rewrite_script=sysdeps/unix/sysv/linux/ldd-rewrite.sed
