i386.c (ix86_supports_split_stack): -fsplit-stack requires assembler support for CFI directives.

gcc/:
	* config/i386/i386.c (ix86_supports_split_stack): -fsplit-stack
	requires assembler support for CFI directives.
libgcc/:
	* configure.ac: Test whether assembler supports CFI directives.
	* config.host: Only add t-stack and i386/t-stack-i386 to
	tmake_file if libgcc_cv_cfi is "yes".
	* configure: Rebuild.

From-SVN: r164671
This commit is contained in:
Ian Lance Taylor 2010-09-28 00:07:12 +00:00 committed by Ian Lance Taylor
parent 9b809695ff
commit b6110d6d19
6 changed files with 50 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2010-09-27 Ian Lance Taylor <iant@google.com>
* config/i386/i386.c (ix86_supports_split_stack): -fsplit-stack
requires assembler support for CFI directives.
2010-09-27 Richard Henderson <rth@redhat.com>
* dwarf2out.c (dwarf2out_cfi_label): Use ASM_OUTPUT_DEBUG_LABEL.

View File

@ -8415,6 +8415,14 @@ ix86_supports_split_stack (bool report ATTRIBUTE_UNUSED)
if (report)
error ("%<-fsplit-stack%> currently only supported on GNU/Linux");
ret = false;
#else
if (!dwarf2out_do_cfi_asm ())
{
if (report)
error ("%<-fsplit-stack%> requires "
"assembler support for CFI directives");
ret = false;
}
#endif
return ret;

View File

@ -1,3 +1,10 @@
2010-09-27 Ian Lance Taylor <iant@google.com>
* configure.ac: Test whether assembler supports CFI directives.
* config.host: Only add t-stack and i386/t-stack-i386 to
tmake_file if libgcc_cv_cfi is "yes".
* configure: Rebuild.
2010-09-27 Ian Lance Taylor <iant@google.com>
* generic-morestack.h: New file.

View File

@ -602,7 +602,10 @@ case ${host} in
i[34567]86-*-linux* | x86_64-*-linux* | \
i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \
i[34567]86-*-gnu*)
tmake_file="${tmake_file} t-tls t-stack i386/t-stack-i386"
tmake_file="${tmake_file} t-tls"
if test "$libgcc_cv_cfi" = "yes"; then
tmake_file="{$tmake_file} t-stack i386/t-stack-i386"
fi
;;
esac

20
libgcc/configure vendored
View File

@ -3707,6 +3707,26 @@ $as_echo "$libgcc_cv_fixed_point" >&6; }
fixed_point=$libgcc_cv_fixed_point
# Check for assembler CFI support.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether assembler supports CFI directives" >&5
$as_echo_n "checking whether assembler supports CFI directives... " >&6; }
if test "${libgcc_cv_cfi+set}" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i = __GCC_HAVE_DWARF2_CFI_ASM;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
libgcc_cv_cfi=yes
else
libgcc_cv_cfi=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_cfi" >&5
$as_echo "$libgcc_cv_cfi" >&6; }
# Check 32bit or 64bit for x86.
case ${host} in
i?86*-*-* | x86_64*-*-*)

View File

@ -135,6 +135,12 @@ AC_CACHE_CHECK([whether fixed-point is supported], [libgcc_cv_fixed_point],
fixed_point=$libgcc_cv_fixed_point
AC_SUBST(fixed_point)
# Check for assembler CFI support.
AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi],
[AC_COMPILE_IFELSE([int i = __GCC_HAVE_DWARF2_CFI_ASM;],
[libgcc_cv_cfi=yes],
[libgcc_cv_cfi=no])])
# Check 32bit or 64bit for x86.
case ${host} in
i?86*-*-* | x86_64*-*-*)