From ce72f71213f2d4c75e3e82b6524e477d0e743ec5 Mon Sep 17 00:00:00 2001 From: ro Date: Mon, 1 Mar 2010 18:09:19 +0000 Subject: [PATCH] * configure.ac (gcc_cv_as_cfi_directive) [i?86-*-solaris*]: Disable cfi directives unless GCC and gas agree on using read-only .eh_frame sections for 64-bit. * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157151 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/configure | 18 +++++++++++++++++- gcc/configure.ac | 18 +++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f243dbf70b1..57ca4f47e89 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-03-01 Rainer Orth + + * configure.ac (gcc_cv_as_cfi_directive) [i?86-*-solaris*]: + Disable cfi directives unless GCC and gas agree on using read-only + .eh_frame sections for 64-bit. + * configure: Regenerate. + 2010-03-01 Richard Guenther PR tree-optimization/43220 diff --git a/gcc/configure b/gcc/configure index 938f5c1d9f4..0bb808a6bee 100755 --- a/gcc/configure +++ b/gcc/configure @@ -21386,7 +21386,23 @@ else sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then gcc_cv_as_cfi_directive=no else - gcc_cv_as_cfi_directive=yes + case "$target" in + i?86-*-solaris2.1[0-9]*) + # On Solaris/x86, make sure that GCC and gas agree on using + # read-only .eh_frame sections for 64-bit. + if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \ + $gcc_cv_objdump -h conftest.o 2>/dev/null | \ + sed -e /.eh_frame/!d -e N | \ + grep READONLY > /dev/null; then + gcc_cv_as_cfi_directive=yes + else + gcc_cv_as_cfi_directive=no + fi + ;; + *) + gcc_cv_as_cfi_directive=yes + ;; + esac fi else # no objdump, err on the side of caution diff --git a/gcc/configure.ac b/gcc/configure.ac index fe1ac55d863..ddfbc7a183d 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2272,7 +2272,23 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive, sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then gcc_cv_as_cfi_directive=no else - gcc_cv_as_cfi_directive=yes + case "$target" in + i?86-*-solaris2.1[[0-9]]*) + # On Solaris/x86, make sure that GCC and gas agree on using + # read-only .eh_frame sections for 64-bit. + if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \ + $gcc_cv_objdump -h conftest.o 2>/dev/null | \ + sed -e /.eh_frame/!d -e N | \ + grep READONLY > /dev/null; then + gcc_cv_as_cfi_directive=yes + else + gcc_cv_as_cfi_directive=no + fi + ;; + *) + gcc_cv_as_cfi_directive=yes + ;; + esac fi else # no objdump, err on the side of caution -- 2.11.0