OSDN Git Service

* configure.ac (gcc_cv_as_cfi_directive) [i?86-*-solaris*]:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Mar 2010 18:09:19 +0000 (18:09 +0000)
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Mar 2010 18:09:19 +0000 (18:09 +0000)
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
gcc/configure
gcc/configure.ac

index f243dbf..57ca4f4 100644 (file)
@@ -1,3 +1,10 @@
+2010-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * 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  <rguenther@suse.de>
 
        PR tree-optimization/43220
index 938f5c1..0bb808a 100755 (executable)
@@ -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
index fe1ac55..ddfbc7a 100644 (file)
@@ -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