aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs/24.3/03_all_gnulib-fbsd-9.1.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/emacs/24.3/03_all_gnulib-fbsd-9.1.patch b/emacs/24.3/03_all_gnulib-fbsd-9.1.patch
new file mode 100644
index 0000000..e8c9196
--- /dev/null
+++ b/emacs/24.3/03_all_gnulib-fbsd-9.1.patch
@@ -0,0 +1,98 @@
+Fix build failure on FreeBSD 9.1 with GCC 4.6.3.
+Patch from upstream bzr, backported to Emacs 24.3.
+https://bugs.gentoo.org/show_bug.cgi?id=473364
+http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14812
+
+2013-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+Try to fix FreeBSD 9.1 porting problem (Bug#14812).
+This incorporates the following merge from gnulib:
+2013-07-07 stdalign, verify: port to FreeBSD 9.1, to C11, and to C++11
+
+--- emacs-24.3-orig/lib/stdalign.in.h
++++ emacs-24.3/lib/stdalign.in.h
+@@ -41,13 +41,28 @@
+ are 4 unless the option '-malign-double' is used.
+
+ The result cannot be used as a value for an 'enum' constant, if you
+- want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
++ want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.
++
++ Include <stddef.h> for offsetof. */
+ #include <stddef.h>
+-#if defined __cplusplus
++
++/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
++ standard headers, defines conflicting implementations of _Alignas
++ and _Alignof that are no better than ours; override them. */
++#undef _Alignas
++#undef _Alignof
++
++#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
++# ifdef __cplusplus
++# if 201103 <= __cplusplus
++# define _Alignof(type) alignof (type)
++# else
+ template <class __t> struct __alignof_helper { char __a; __t __b; };
+-# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+-#else
+-# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
++# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
++# endif
++# else
++# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
++# endif
+ #endif
+ #define alignof _Alignof
+ #define __alignof_is_defined 1
+@@ -77,12 +92,16 @@
+
+ */
+
+-#if __GNUC__ || __IBMC__ || __IBMCPP__ || 0x5110 <= __SUNPRO_C
+-# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+-#elif 1300 <= _MSC_VER
+-# define _Alignas(a) __declspec (align (a))
++#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
++# if defined __cplusplus && 201103 <= __cplusplus
++# define _Alignas(a) alignas (a)
++# elif __GNUC__ || __IBMC__ || __IBMCPP__ || __ICC || 0x5110 <= __SUNPRO_C
++# define _Alignas(a) __attribute__ ((__aligned__ (a)))
++# elif 1300 <= _MSC_VER
++# define _Alignas(a) __declspec (align (a))
++# endif
+ #endif
+-#ifdef _Alignas
++#if defined _Alignas || (defined __STDC_VERSION && 201112 <= __STDC_VERSION__)
+ # define alignas _Alignas
+ # define __alignas_is_defined 1
+ #endif
+--- emacs-24.3-orig/lib/verify.h
++++ emacs-24.3/lib/verify.h
+@@ -40,6 +40,14 @@
+ # define _GL_HAVE_STATIC_ASSERT 1
+ # endif
+
++/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
++ system headers, defines a conflicting _Static_assert that is no
++ better than ours; override it. */
++#ifndef _GL_HAVE_STATIC_ASSERT
++# include <stddef.h>
++# undef _Static_assert
++#endif
++
+ /* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+--- emacs-24.3-orig/m4/stdalign.m4
++++ emacs-24.3/m4/stdalign.m4
+@@ -31,7 +31,8 @@ AC_DEFUN([gl_STDALIGN_H],
+
+ /* Test _Alignas only on platforms where gnulib can help. */
+ #if \
+- (__GNUC__ || __IBMC__ || __IBMCPP__ \
++ ((defined __cplusplus && 201103 <= __cplusplus) \
++ || __GNUC__ || __IBMC__ || __IBMCPP__ || __ICC \
+ || 0x5110 <= __SUNPRO_C || 1300 <= _MSC_VER)
+ int alignas (8) alignas_int = 1;
+ char test_alignas[_Alignof (alignas_int) == 8 ? 1 : -1];