OSDN Git Service

* configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Mar 2010 19:36:26 +0000 (19:36 +0000)
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Mar 2010 19:36:26 +0000 (19:36 +0000)
* configure: Regenerate.
* fficonfig.h.in: Regenerate.
* libffi/src/x86/unix64.S (.eh_frame)
[HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157466 138bc75d-0d04-0410-961f-82ee72b054a4

libffi/ChangeLog
libffi/configure
libffi/configure.ac
libffi/fficonfig.h.in
libffi/src/x86/unix64.S

index 85e255d..200f525 100644 (file)
@@ -1,3 +1,11 @@
+2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
+       * configure: Regenerate.
+       * fficonfig.h.in: Regenerate.
+       * libffi/src/x86/unix64.S (.eh_frame)
+       [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
+
 2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
        * doc/libffi.texi (The Closure API): Fix typo.
index 43fc0ec..5555e51 100755 (executable)
@@ -12419,6 +12419,29 @@ $as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h
      ;;
 esac
 
+if test x$TARGET = xX86_64; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports unwind section type" >&5
+$as_echo_n "checking assembler supports unwind section type... " >&6; }
+if test "${libffi_cv_as_x86_64_unwind_section_type+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+
+       libffi_cv_as_x86_64_unwind_section_type=yes
+       echo '.section .eh_frame,"a",@unwind' > conftest.s
+       if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
+           libffi_cv_as_x86_64_unwind_section_type=no
+       fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5
+$as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; }
+    if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
+
+$as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h
+
+    fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5
 $as_echo_n "checking whether .eh_frame section should be read-only... " >&6; }
 if test "${libffi_cv_ro_eh_frame+set}" = set; then :
index c0e0da1..1b484f9 100644 (file)
@@ -284,6 +284,21 @@ case "$target" in
      ;;
 esac
 
+if test x$TARGET = xX86_64; then
+    AC_CACHE_CHECK([assembler supports unwind section type],
+       libffi_cv_as_x86_64_unwind_section_type, [
+       libffi_cv_as_x86_64_unwind_section_type=yes
+       echo '.section .eh_frame,"a",@unwind' > conftest.s
+       if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then
+           libffi_cv_as_x86_64_unwind_section_type=no
+       fi
+       ])
+    if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then
+       AC_DEFINE(HAVE_AS_X86_64_UNWIND_SECTION_TYPE, 1,
+                 [Define if your assembler supports unwind section type.])
+    fi
+fi
+
 AC_CACHE_CHECK([whether .eh_frame section should be read-only],
     libffi_cv_ro_eh_frame, [
        libffi_cv_ro_eh_frame=no
index e03bbf9..7231cc5 100644 (file)
@@ -43,6 +43,9 @@
    */
 #undef HAVE_AS_SPARC_UA_PCREL
 
+/* Define if your assembler supports unwind section type. */
+#undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
+
 /* Define if your assembler supports PC relative relocs. */
 #undef HAVE_AS_X86_PCREL
 
index fe3f4fd..7a6619a 100644 (file)
@@ -324,7 +324,11 @@ ffi_closure_unix64:
 .LUW9:
        .size   ffi_closure_unix64,.-ffi_closure_unix64
 
+#ifdef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
+       .section        .eh_frame,"a",@unwind
+#else
        .section        .eh_frame,"a",@progbits
+#endif
 .Lframe1:
        .long   .LECIE1-.LSCIE1         /* CIE Length */
 .LSCIE1: