summaryrefslogtreecommitdiff
path: root/debian/patches/fpm_gcc_atomics.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/fpm_gcc_atomics.patch')
-rw-r--r--debian/patches/fpm_gcc_atomics.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/debian/patches/fpm_gcc_atomics.patch b/debian/patches/fpm_gcc_atomics.patch
new file mode 100644
index 000000000..5315e3d33
--- /dev/null
+++ b/debian/patches/fpm_gcc_atomics.patch
@@ -0,0 +1,31 @@
+Description: Use GCC's atomic builtins in the FPM SAPI to allow it to
+ build everywhere.
+Origin: vendor
+Forwarded: http://bugs.php.net/52407
+Last-Update: 2010-07-28
+
+Index: php-5.3.3/sapi/fpm/fpm/fpm_atomic.h
+===================================================================
+--- php-5.3.3.orig/sapi/fpm/fpm/fpm_atomic.h
++++ php-5.3.3/sapi/fpm/fpm/fpm_atomic.h
+@@ -12,7 +12,19 @@
+ #endif
+ #include <sched.h>
+
+-#if ( __i386__ || __i386 )
++#if (__GNUC__) && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 1)
++
++/**
++ * all the cases below (as provided by upstream) define:
++ * word as atomic_int_t, and
++ * unsigned word as atomic_uint_t
++ * and only use volatile atomic_uint_t as atomic_t
++ */
++
++typedef volatile unsigned long atomic_t;
++#define atomic_cmp_set(a,b,c) __sync_bool_compare_and_swap(a,b,c)
++
++#elif ( __i386__ || __i386 )
+
+ typedef int32_t atomic_int_t;
+ typedef uint32_t atomic_uint_t;