Skip to content

Commit 0e76caf

Browse files
orlitzkynikic
authored andcommitted
Disable add/sub asm for gcc 4.9 pic/pie builds
1 parent 0ad82e4 commit 0e76caf

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

Zend/zend_operators.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,10 @@ static zend_always_inline void fast_long_decrement_function(zval *op1)
510510

511511
static zend_always_inline void fast_long_add_function(zval *result, zval *op1, zval *op2)
512512
{
513-
#if defined(__GNUC__) && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
513+
#if defined(__GNUC__) && defined(__i386__) \
514+
&& !(4 == __GNUC__ && 8 == __GNUC_MINOR__) \
515+
&& !(4 == __GNUC__ && 9 == __GNUC_MINOR__ && (defined(__PIC__) || defined(__PIE__)))
516+
/* Position-independent builds fail with gcc-4.9.x */
514517
__asm__(
515518
"movl (%1), %%eax\n\t"
516519
"addl (%2), %%eax\n\t"
@@ -596,7 +599,10 @@ static zend_always_inline int fast_add_function(zval *result, zval *op1, zval *o
596599

597600
static zend_always_inline void fast_long_sub_function(zval *result, zval *op1, zval *op2)
598601
{
599-
#if defined(__GNUC__) && defined(__i386__) && !(4 == __GNUC__ && 8 == __GNUC_MINOR__)
602+
#if defined(__GNUC__) && defined(__i386__) && \
603+
!(4 == __GNUC__ && 8 == __GNUC_MINOR__) && \
604+
!(4 == __GNUC__ && 9 == __GNUC_MINOR__ && (defined(__PIC__) || defined(__PIE__)))
605+
/* Position-independent builds fail with gcc-4.9.x */
600606
__asm__(
601607
"movl (%1), %%eax\n\t"
602608
"subl (%2), %%eax\n\t"

0 commit comments

Comments
 (0)