Ensure the linker supports @unwind sections in libffi.
authorAnthony Green <green@moxielogic.com>
Fri, 14 Mar 2014 20:54:31 +0000 (16:54 -0400)
committerAnthony Green <green@moxielogic.com>
Fri, 14 Mar 2014 20:54:31 +0000 (16:54 -0400)
ChangeLog
Makefile.in
configure
configure.ac

index 138b5af..1b3c6e4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,16 @@
+2014-03-14  Anthony Green <green@moxielogic.com>
+
+       * configure, Makefile.in: Rebuilt.
+
 2014-03-10  Mike Hommey <mh+mozilla@glandium.org>
 
        * configure.ac: Allow building for mipsel with Android NDK r8.
        * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single quotes.
 
+2014-03-10  Landry Breuil <landry@openbsd.org>
+
+       * configure.ac: Ensure the linker supports @unwind sections in libffi.
+
 2014-03-01  Anthony Green  <green@moxielogic.com>
 
        * Makefile.am (EXTRA_DIST): Replace old scripts with
index 70d9bb7..08f6620 100644 (file)
@@ -646,39 +646,39 @@ info_TEXINFOS = doc/libffi.texi
 # values defined in terms of make variables, as is the case for CC and
 # friends when we are called from the top level Makefile.
 AM_MAKEFLAGS = \
-       'AR_FLAGS=$(AR_FLAGS)' \
-       'CC_FOR_BUILD=$(CC_FOR_BUILD)' \
-       'CFLAGS=$(CFLAGS)' \
-       'CXXFLAGS=$(CXXFLAGS)' \
-       'CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)' \
-       'CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)' \
-       'INSTALL=$(INSTALL)' \
-       'INSTALL_DATA=$(INSTALL_DATA)' \
-       'INSTALL_PROGRAM=$(INSTALL_PROGRAM)' \
-       'INSTALL_SCRIPT=$(INSTALL_SCRIPT)' \
-       'JC1FLAGS=$(JC1FLAGS)' \
-       'LDFLAGS=$(LDFLAGS)' \
-       'LIBCFLAGS=$(LIBCFLAGS)' \
-       'LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)' \
-       'MAKE=$(MAKE)' \
-       'MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)' \
-       'PICFLAG=$(PICFLAG)' \
-       'PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)' \
-       'RUNTESTFLAGS=$(RUNTESTFLAGS)' \
-       'SHELL=$(SHELL)' \
-       'exec_prefix=$(exec_prefix)' \
-       'infodir=$(infodir)' \
-       'libdir=$(libdir)' \
-       'mandir=$(mandir)' \
-       'prefix=$(prefix)' \
-       'AR=$(AR)' \
-       'AS=$(AS)' \
-       'CC=$(CC)' \
-       'CXX=$(CXX)' \
-       'LD=$(LD)' \
-       'NM=$(NM)' \
-       'RANLIB=$(RANLIB)' \
-       'DESTDIR=$(DESTDIR)'
+       "AR_FLAGS=$(AR_FLAGS)" \
+       "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+       "CFLAGS=$(CFLAGS)" \
+       "CXXFLAGS=$(CXXFLAGS)" \
+       "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+       "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+       "INSTALL=$(INSTALL)" \
+       "INSTALL_DATA=$(INSTALL_DATA)" \
+       "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+       "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+       "JC1FLAGS=$(JC1FLAGS)" \
+       "LDFLAGS=$(LDFLAGS)" \
+       "LIBCFLAGS=$(LIBCFLAGS)" \
+       "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+       "MAKE=$(MAKE)" \
+       "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+       "PICFLAG=$(PICFLAG)" \
+       "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+       "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+       "SHELL=$(SHELL)" \
+       "exec_prefix=$(exec_prefix)" \
+       "infodir=$(infodir)" \
+       "libdir=$(libdir)" \
+       "mandir=$(mandir)" \
+       "prefix=$(prefix)" \
+       "AR=$(AR)" \
+       "AS=$(AS)" \
+       "CC=$(CC)" \
+       "CXX=$(CXX)" \
+       "LD=$(LD)" \
+       "NM=$(NM)" \
+       "RANLIB=$(RANLIB)" \
+       "DESTDIR=$(DESTDIR)"
 
 
 # Subdir rules rely on $(FLAGS_TO_PASS)
index 06268ec..eb7262b 100755 (executable)
--- a/configure
+++ b/configure
@@ -13584,7 +13584,7 @@ case "$host" in
   mips-sgi-irix5.* | mips-sgi-irix6.* | mips*-*-rtems*)
        TARGET=MIPS; TARGETDIR=mips
        ;;
-  mips*-*-linux* | mips*-*-openbsd*)
+  mips*-*linux* | mips*-*-openbsd*)
        # Support 128-bit long double for NewABI.
        HAVE_LONG_DOUBLE='defined(__mips64)'
        TARGET=MIPS; TARGETDIR=mips
 
 
 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; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5
+$as_echo_n "checking toolchain supports unwind section type... " >&6; }
 if ${libffi_cv_as_x86_64_unwind_section_type+:} false; 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
+        cat  > conftest1.s << EOF
+.text
+.globl foo
+foo:
+jmp bar
+.section .eh_frame,"a",@unwind
+bar:
+EOF
+
+        cat > conftest2.c  << EOF
+extern void foo();
+int main(){foo();}
+EOF
+
+       libffi_cv_as_x86_64_unwind_section_type=no
+       # we ensure that we can compile _and_ link an assembly file containing an @unwind section
+       # since the compiler can support it and not the linker (ie old binutils)
+       if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
+           libffi_cv_as_x86_64_unwind_section_type=yes
        fi
 
 fi
index bf003fa..90a11f6 100644 (file)
@@ -460,12 +460,28 @@ AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)
 AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)
 
 if test x$TARGET = xX86_64; then
-    AC_CACHE_CHECK([assembler supports unwind section type],
+    AC_CACHE_CHECK([toolchain 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
+        cat  > conftest1.s << EOF
+.text
+.globl foo
+foo:
+jmp bar
+.section .eh_frame,"a",@unwind
+bar:
+EOF
+
+        cat > conftest2.c  << EOF
+extern void foo();
+int main(){foo();}
+EOF
+
+       libffi_cv_as_x86_64_unwind_section_type=no
+       # we ensure that we can compile _and_ link an assembly file containing an @unwind section
+       # since the compiler can support it and not the linker (ie old binutils)
+       if $CC -Wa,--fatal-warnings $CFLAGS -c conftest1.s > /dev/null 2>&1 && \
+           $CC conftest2.c conftest1.o > /dev/null 2>&1 ; then
+           libffi_cv_as_x86_64_unwind_section_type=yes
        fi
        ])
     if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then