Commit 260d513fea00b3613fe957a44a157fe72c4ca29e

green 2008-07-17T13:13:52

Version 3.0.6. sh/sh64 fixes.

diff --git a/libffi/ChangeLog.libffi b/libffi/ChangeLog.libffi
index 6ebdbaa..5621ca8 100644
--- a/libffi/ChangeLog.libffi
+++ b/libffi/ChangeLog.libffi
@@ -1,3 +1,20 @@
+2008-07-17  Anthony Green  <green@redhat.com>
+
+	* configure.ac: Bump version to 3.0.6.
+	* configure, doc/stamp-vti, doc/version.texi: Rebuilt.
+	* libtool-version: Increment revision.  Add documentation.
+	* README: Update for new release.
+
+2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+	* src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
+	int.
+
+2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+	* src/sh/sysv.S: Add .note.GNU-stack on Linux.
+	* src/sh64/sysv.S: Likewise.
+
 2008-04-03  Anthony Green  <green@redhat.com>
 
 	* libffi.pc.in (Libs): Add -L${libdir}.
diff --git a/libffi/README b/libffi/README
index a936962..b49c984 100644
--- a/libffi/README
+++ b/libffi/README
@@ -1,7 +1,7 @@
 Status
 ======
 
-libffi-3.0.5 was released on April 3, 2008. Check the libffi web
+libffi-3.0.6 was released on July 17, 2008. Check the libffi web
 page for updates: <URL:http://sourceware.org/libffi/>.
 
 
@@ -158,6 +158,11 @@ arguments' test).
 History
 =======
 
+3.0.6 Jul-17-08
+        Fix for closures on sh.
+	Mark the sh/sh64 stack as non-executable.
+	(both thanks to Kaz Kojima)
+
 3.0.5 Apr-3-08
         Fix libffi.pc file.
 	Fix #define ARM for IcedTea users.
diff --git a/libffi/configure b/libffi/configure
index cc8963d..f72ccaa 100755
--- a/libffi/configure
+++ b/libffi/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for libffi 3.0.5.
+# Generated by GNU Autoconf 2.61 for libffi 3.0.6.
 #
 # Report bugs to <http://gcc.gnu.org/bugs.html>.
 #
@@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='libffi'
 PACKAGE_TARNAME='libffi'
-PACKAGE_VERSION='3.0.5'
-PACKAGE_STRING='libffi 3.0.5'
+PACKAGE_VERSION='3.0.6'
+PACKAGE_STRING='libffi 3.0.6'
 PACKAGE_BUGREPORT='http://gcc.gnu.org/bugs.html'
 
 # Factoring default headers for most tests.
@@ -1459,7 +1459,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libffi 3.0.5 to adapt to many kinds of systems.
+\`configure' configures libffi 3.0.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1530,7 +1530,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libffi 3.0.5:";;
+     short | recursive ) echo "Configuration of libffi 3.0.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1640,7 +1640,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libffi configure 3.0.5
+libffi configure 3.0.6
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1654,7 +1654,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libffi $as_me 3.0.5, which was
+It was created by libffi $as_me 3.0.6, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2477,7 +2477,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libffi'
- VERSION='3.0.5'
+ VERSION='3.0.6'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -23321,7 +23321,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libffi $as_me 3.0.5, which was
+This file was extended by libffi $as_me 3.0.6, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23378,7 +23378,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-libffi config.status 3.0.5
+libffi config.status 3.0.6
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/libffi/configure.ac b/libffi/configure.ac
index 3eac92d..40b383c 100644
--- a/libffi/configure.ac
+++ b/libffi/configure.ac
@@ -2,7 +2,7 @@ dnl Process this with autoconf to create configure
 
 AC_PREREQ(2.59)
 
-AC_INIT([libffi], [3.0.5], [http://gcc.gnu.org/bugs.html])
+AC_INIT([libffi], [3.0.6], [http://gcc.gnu.org/bugs.html])
 AC_CONFIG_HEADERS([fficonfig.h])
 
 AC_CANONICAL_SYSTEM
diff --git a/libffi/doc/stamp-vti b/libffi/doc/stamp-vti
index 3768fae..48beaf9 100644
--- a/libffi/doc/stamp-vti
+++ b/libffi/doc/stamp-vti
@@ -1,4 +1,4 @@
 @set UPDATED 14 February 2008
 @set UPDATED-MONTH February 2008
-@set EDITION 3.0.5
-@set VERSION 3.0.5
+@set EDITION 3.0.6
+@set VERSION 3.0.6
diff --git a/libffi/doc/version.texi b/libffi/doc/version.texi
index 3768fae..48beaf9 100644
--- a/libffi/doc/version.texi
+++ b/libffi/doc/version.texi
@@ -1,4 +1,4 @@
 @set UPDATED 14 February 2008
 @set UPDATED-MONTH February 2008
-@set EDITION 3.0.5
-@set VERSION 3.0.5
+@set EDITION 3.0.6
+@set VERSION 3.0.6
diff --git a/libffi/libtool-version b/libffi/libtool-version
index 55aa09c..d300d25 100644
--- a/libffi/libtool-version
+++ b/libffi/libtool-version
@@ -2,5 +2,28 @@
 # the libtool manual to understand the meaning of the fields.  This is
 # a separate file so that version updates don't involve re-running
 # automake.
+#
+# Here are a set of rules to help you update your library version
+# information:
+# 
+# 1. Start with version information of `0:0:0' for each libtool library.
+#
+# 2. Update the version information only immediately before a public
+#    release of your software. More frequent updates are unnecessary,
+#    and only guarantee that the current interface number gets larger
+#    faster.
+#
+# 3. If the library source code has changed at all since the last
+#    update, then increment revision (`c:r:a' becomes `c:r+1:a').
+#
+# 4. If any interfaces have been added, removed, or changed since the
+#    last update, increment current, and set revision to 0.
+#
+# 5. If any interfaces have been added since the last public release,
+#    then increment age.
+#
+# 6. If any interfaces have been removed since the last public
+#    release, then set age to 0.
+#
 # CURRENT:REVISION:AGE
-5:6:0
+5:7:0
diff --git a/libffi/src/sh/ffi.c b/libffi/src/sh/ffi.c
index d7fa1d4..69bd025 100644
--- a/libffi/src/sh/ffi.c
+++ b/libffi/src/sh/ffi.c
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Kaz Kojima
+   ffi.c - Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Kaz Kojima
            Copyright (c) 2008 Red Hat, Inc.
    
    SuperH Foreign Function Interface 
@@ -461,7 +461,7 @@ ffi_prep_closure_loc (ffi_closure* closure,
 		      void *codeloc)
 {
   unsigned int *tramp;
-  unsigned short insn;
+  unsigned int insn;
 
   FFI_ASSERT (cif->abi == FFI_GCC_SYSV);
 
diff --git a/libffi/src/sh/sysv.S b/libffi/src/sh/sysv.S
index ea798f7..ac04e2a 100644
--- a/libffi/src/sh/sysv.S
+++ b/libffi/src/sh/sysv.S
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   sysv.S - Copyright (c) 2002, 2003, 2004, 2006 Kaz Kojima
+   sysv.S - Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima
    
    SuperH Foreign Function Interface 
 
@@ -702,6 +702,10 @@ L_case_v:
 .ffi_closure_SYSV_end:
         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
 
+#if defined __ELF__ && defined __linux__
+	.section	.note.GNU-stack,"",@progbits
+#endif
+	
 	.section	".eh_frame","aw",@progbits
 __FRAME_BEGIN__:
 	.4byte	.LECIE1-.LSCIE1	/* Length of Common Information Entry */
diff --git a/libffi/src/sh64/sysv.S b/libffi/src/sh64/sysv.S
index b6a248d..6dcef57 100644
--- a/libffi/src/sh64/sysv.S
+++ b/libffi/src/sh64/sysv.S
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------
-   sysv.S - Copyright (c) 2003, 2004 Kaz Kojima
+   sysv.S - Copyright (c) 2003, 2004, 2008 Kaz Kojima
    
    SuperH SHmedia Foreign Function Interface 
 
@@ -430,6 +430,10 @@ ENTRY(ffi_closure_SYSV)
 .ffi_closure_SYSV_end:
 	.size	 CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
 
+#if defined __ELF__ && defined __linux__
+	.section	.note.GNU-stack,"",@progbits
+#endif
+	
 	.section	".eh_frame","aw",@progbits
 __FRAME_BEGIN__:
 	.4byte	.LECIE1-.LSCIE1	/* Length of Common Information Entry */