From: Jan Rękorajski Date: Sat, 3 Jan 2015 22:03:01 +0000 (+0000) Subject: - build on x32 with a help of slightly modified upstream patch X-Git-Tag: auto/th/php53-5.3.29-13~4 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fphp.git;a=commitdiff_plain;h=137e3565816bb31ca117b4d22a3f3f8fa90fafaf - build on x32 with a help of slightly modified upstream patch Conflicts: php.spec cherry-picked dc101b854cf29eca82f58ba779ef13c48ccd9181 --- diff --git a/php.spec b/php.spec index 5453539..177f67a 100644 --- a/php.spec +++ b/php.spec @@ -90,12 +90,12 @@ %undefine with_mm %endif -%ifnarch %{ix86} %{x8664} sparc sparcv9 alpha +%ifnarch %{ix86} %{x8664} x32 sparc sparcv9 alpha # ppc disabled (broken on th-ppc) %undefine with_interbase %endif -%ifnarch %{ix86} %{x8664} +%ifnarch %{ix86} %{x8664} x32 # unsupported, see sapi/cgi/fpm/fpm_atomic.h %undefine with_fpm %endif @@ -207,8 +207,9 @@ Patch64: %{orgname}-m4.patch Patch65: system-libzip.patch Patch66: %{orgname}-db.patch Patch67: php-litespeed.patch -Patch68: mysql-lib-ver-mismatch.patch +Patch68: x32.patch Patch69: fpm-conf-split.patch +Patch70: mysql-lib-ver-mismatch.patch # Fixes for security bugs # https://repo.webtatic.com/yum/centos/5/SRPMS/repoview/php.html # also from RHEL6/CentOS7 @@ -2072,6 +2073,7 @@ cp -p php.ini-production php.ini gzip -dc %{SOURCE15} | tar xf - -C sapi/ %patch67 -p1 %patch68 -p1 +%patch70 -p1 %patch220 -p1 %patch238 -p1 diff --git a/x32.patch b/x32.patch new file mode 100644 index 0000000..4b86bb6 --- /dev/null +++ b/x32.patch @@ -0,0 +1,62 @@ +From 514afd67b651bea834bdb84b7685b48e9e56ac21 Mon Sep 17 00:00:00 2001 +From: Gustavo Lopes +Date: Tue, 30 Apr 2013 19:00:31 +0200 +Subject: [PATCH] Fix bug #64729: compilation failure on x32 + +--- + Zend/zend_alloc.c | 18 ++++++++++++++---- + Zend/zend_multiply.h | 4 ++-- + 2 files changed, 16 insertions(+), 6 deletions(-) + +diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c +index 605e396..0bbd59a 100644 +--- a/Zend/zend_alloc_canary.c ++++ b/Zend/zend_alloc_canary.c +@@ -720,7 +720,7 @@ static inline unsigned int zend_mm_high_bit(size_t _size) + #elif defined(__GNUC__) && defined(__x86_64__) + unsigned long n; + +- __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ __asm__("bsr %1,%0\n\t" : "=r" (n) : "rm" (_size)); + return (unsigned int)n; + #elif defined(_MSC_VER) && defined(_M_IX86) + __asm { +@@ -746,12 +746,12 @@ static inline unsigned int zend_mm_low_bit(size_t _size) + #elif defined(__GNUC__) && defined(__x86_64__) + unsigned long n; + +- __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size)); ++ __asm__("bsf %1,%0\n\t" : "=r" (n) : "rm" (_size)); + return (unsigned int)n; + #elif defined(_MSC_VER) && defined(_M_IX86) + __asm { + bsf eax, _size +- } ++ } + #else + static const int offset[16] = {4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0}; + unsigned int n; +@@ -2481,12 +2481,22 @@ static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) + size_t res = nmemb; + unsigned long overflow = 0; + +- __asm__ ("mulq %3\n\taddq %4,%0\n\tadcq %1,%1" ++#ifdef __ILP32__ /* x32 */ ++# define LP_SUFF "l" ++#else /* amd64 */ ++# define LP_SUFF "q" ++#endif ++ ++ __asm__ ("mul" LP_SUFF " %3\n\t" ++ "add %4,%0\n\t" ++ "adc %1,%1" + : "=&a"(res), "=&d" (overflow) + : "%0"(res), + "rm"(size), + "rm"(offset)); + ++#undef LP_SUFF ++ + if (UNEXPECTED(overflow)) { + zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); + return 0;