]> git.pld-linux.org Git - packages/php.git/blob - x32.patch
split x32 patch to be able to build without suhosin patch
[packages/php.git] / x32.patch
1 From: Gustavo Lopes <glopes@nebm.ist.utl.pt>
2 Date: Tue, 30 Apr 2013 17:00:31 +0000 (+0200)
3 Subject: Fix bug #64729: compilation failure on x32
4 X-Git-Tag: php-5.4.16RC1~30^2~10
5 X-Git-Url: http://72.52.91.13:8000/?p=php-src.git;a=commitdiff_plain;h=514afd67b651bea834bdb84b7685b48e9e56ac21;hp=4a92ae34011ad2246500f27469f378b66d832976
6
7 Fix bug #64729: compilation failure on x32
8 ---
9
10 --- php-5.3.29/Zend/zend_alloc.c~       2015-02-28 01:32:39.000000000 +0200
11 +++ php-5.3.29/Zend/zend_alloc.c        2015-02-28 01:35:13.896183585 +0200
12 @@ -672,7 +672,7 @@ static inline unsigned int zend_mm_high_bit(size_t _size)
13  #elif defined(__GNUC__) && defined(__x86_64__)
14         unsigned long n;
15  
16 -        __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm"  (_size));
17 +        __asm__("bsr %1,%0\n\t" : "=r" (n) : "rm"  (_size));
18          return (unsigned int)n;
19  #elif defined(_MSC_VER) && defined(_M_IX86)
20         __asm {
21 @@ -698,12 +698,12 @@ static inline unsigned int zend_mm_low_bit(size_t _size)
22  #elif defined(__GNUC__) && defined(__x86_64__)
23          unsigned long n;
24  
25 -        __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm"  (_size));
26 +        __asm__("bsf %1,%0\n\t" : "=r" (n) : "rm"  (_size));
27          return (unsigned int)n;
28  #elif defined(_MSC_VER) && defined(_M_IX86)
29         __asm {
30                 bsf eax, _size
31 -   }
32 +       }
33  #else
34         static const int offset[16] = {4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0};
35         unsigned int n;
36 @@ -2406,12 +2406,22 @@
37          size_t res = nmemb;
38          unsigned long overflow = 0;
39  
40 -        __asm__ ("mulq %3\n\taddq %4,%0\n\tadcq $0,%1"
41 +#ifdef __ILP32__ /* x32 */
42 +# define LP_SUFF "l"
43 +#else /* amd64 */
44 +# define LP_SUFF "q"
45 +#endif
46 +
47 +        __asm__ ("mul" LP_SUFF  " %3\n\t"
48 +                 "add %4,%0\n\t"
49 +                 "adc $0,%1"
50               : "=&a"(res), "=&d" (overflow)
51               : "%0"(res),
52                 "rm"(size),
53                 "rm"(offset));
54  
55 +#undef LP_SUFF
56 +
57          if (UNEXPECTED(overflow)) {
58                  zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
59                  return 0;
60 --- php-5.3.29/Zend/zend_multiply.h~    2014-08-13 22:22:50.000000000 +0300
61 +++ php-5.3.29/Zend/zend_multiply.h     2015-02-28 01:57:48.989051739 +0200
62 @@ -19,7 +19,7 @@
63  
64  /* $Id$ */
65  
66 -#if defined(__i386__) && defined(__GNUC__)
67 +#if (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__)
68  
69  #define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {      \
70         long __tmpvar;                                                                                                  \
This page took 0.08475 seconds and 3 git commands to generate.