Default to DWARF 4 on Solaris if linker supports CIEv3

* configure.ac (gcc_cv_ld_eh_frame_ciev3): New test.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/sol2.c (solaris_override_options): Only enforce DWARF 2
	if !HAVE_LD_EH_FRAME_CIEV3.

From-SVN: r196866
This commit is contained in:
Rainer Orth 2013-03-21 11:57:35 +00:00 committed by Rainer Orth
parent 50d4421cb2
commit 5022315aaa
5 changed files with 93 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2013-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (gcc_cv_ld_eh_frame_ciev3): New test.
* configure: Regenerate.
* config.in: Regenerate.
* config/sol2.c (solaris_override_options): Only enforce DWARF 2
if !HAVE_LD_EH_FRAME_CIEV3.
2013-03-21 Richard Biener <rguenther@suse.de>
* tree-cfg.c (verify_expr_no_block): New function.

View File

@ -1223,6 +1223,12 @@
#endif
/* Define 0/1 if your linker supports CIE v3 in .eh_frame. */
#ifndef USED_FOR_TARGET
#undef HAVE_LD_EH_FRAME_CIEV3
#endif
/* Define if your linker supports .eh_frame_hdr. */
#undef HAVE_LD_EH_FRAME_HDR

View File

@ -286,8 +286,8 @@ solaris_file_end (void)
void
solaris_override_options (void)
{
/* Don't emit DWARF3/4 unless specifically selected. Solaris ld cannot
handle CIE version 3 in .eh_frame. */
if (!global_options_set.x_dwarf_version)
/* Older versions of Solaris ld cannot handle CIE version 3 in .eh_frame.
Don't emit DWARF3/4 unless specifically selected if so. */
if (!HAVE_LD_EH_FRAME_CIEV3 && !global_options_set.x_dwarf_version)
dwarf_version = 2;
}

40
gcc/configure vendored
View File

@ -26350,6 +26350,46 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_hdr" >&5
$as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker CIEv3 in .eh_frame support" >&5
$as_echo_n "checking linker CIEv3 in .eh_frame support... " >&6; }
gcc_cv_ld_eh_frame_ciev3=no
if test $in_tree_ld = yes ; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
&& test $in_tree_ld_is_elf = yes; then
gcc_cv_ld_eh_frame_ciev3=yes
fi
elif test x$gcc_cv_ld != x; then
if echo "$ld_ver" | grep GNU > /dev/null; then
gcc_cv_ld_eh_frame_ciev3=yes
if test 0"$ld_date" -lt 20040513; then
if test -n "$ld_date"; then
# If there was date string, but was earlier than 2004-05-13, fail
gcc_cv_ld_eh_frame_ciev3=no
elif test "$ld_vers_major" -lt 2; then
gcc_cv_ld_eh_frame_ciev3=no
elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
gcc_cv_ld_eh_frame_ciev3=no
fi
fi
else
case "$target" in
*-*-solaris2*)
# Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
gcc_cv_ld_eh_frame_ciev3=yes
fi
;;
esac
fi
fi
cat >>confdefs.h <<_ACEOF
#define HAVE_LD_EH_FRAME_CIEV3 `if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_ciev3" >&5
$as_echo "$gcc_cv_ld_eh_frame_ciev3" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker position independent executable support" >&5
$as_echo_n "checking linker position independent executable support... " >&6; }
gcc_cv_ld_pie=no

View File

@ -4349,6 +4349,42 @@ if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
fi
AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
gcc_cv_ld_eh_frame_ciev3=no
if test $in_tree_ld = yes ; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
&& test $in_tree_ld_is_elf = yes; then
gcc_cv_ld_eh_frame_ciev3=yes
fi
elif test x$gcc_cv_ld != x; then
if echo "$ld_ver" | grep GNU > /dev/null; then
gcc_cv_ld_eh_frame_ciev3=yes
if test 0"$ld_date" -lt 20040513; then
if test -n "$ld_date"; then
# If there was date string, but was earlier than 2004-05-13, fail
gcc_cv_ld_eh_frame_ciev3=no
elif test "$ld_vers_major" -lt 2; then
gcc_cv_ld_eh_frame_ciev3=no
elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
gcc_cv_ld_eh_frame_ciev3=no
fi
fi
else
case "$target" in
*-*-solaris2*)
# Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
gcc_cv_ld_eh_frame_ciev3=yes
fi
;;
esac
fi
fi
AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
[`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
[Define 0/1 if your linker supports CIE v3 in .eh_frame.])
AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
AC_MSG_CHECKING(linker position independent executable support)
gcc_cv_ld_pie=no
if test $in_tree_ld = yes ; then