From: Jan Rękorajski Date: Mon, 6 Apr 2015 09:08:36 +0000 (+0000) Subject: - fix build on x32 X-Git-Tag: auto/th/php52-5.2.17-20130717.11 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fphp.git;a=commitdiff_plain;h=575a5f9 - fix build on x32 - rel 11 --- diff --git a/php.spec b/php.spec index 7929418..adb1c66 100644 --- a/php.spec +++ b/php.spec @@ -77,7 +77,7 @@ %undefine with_mm %endif -%ifnarch %{ix86} %{x8664} sparc sparcv9 alpha ppc +%ifnarch %{ix86} %{x8664} x32 sparc sparcv9 alpha ppc %undefine with_interbase %endif %if "%{pld_release}" == "th" @@ -87,7 +87,7 @@ %endif %endif -%ifnarch %{ix86} %{x8664} +%ifnarch %{ix86} %{x8664} x32 # unsupported, see sapi/cgi/fpm/fpm_atomic.h %undefine with_fpm %endif @@ -112,7 +112,7 @@ ERROR: You need to select at least one Apache SAPI to build shared modules. %define magic_mime /usr/share/misc/magic.mime %endif -%define rel 10 +%define rel 11 %define orgname php %define ver_suffix 52 %define php_suffix %{!?with_default_php:%{ver_suffix}} @@ -218,6 +218,7 @@ Patch73: CVE-2013-6420.patch Patch74: CVE-2013-4073.patch Patch75: php-secbug-67498.patch Patch76: CVE-2015-0232.patch +Patch77: x32.patch # CENTALT patches # Backport from 5.3.6 Patch311: php-5.3.6-bug-47435.patch @@ -1939,6 +1940,7 @@ done %patch74 -p1 %patch75 -p1 %patch76 -p1 +%patch77 -p1 # Bugfix backport from 5.3.6 %patch311 -p1 -b .bug-47435 diff --git a/x32.patch b/x32.patch new file mode 100644 index 0000000..61486a5 --- /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.c ++++ b/Zend/zend_alloc.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;