ID: 31358 Updated by: [EMAIL PROTECTED] Reported By: hawk at pld-linux dot org -Status: Open +Status: Assigned Bug Type: Compile Failure Operating System: PLD Linux 1.0 running on PowerPC PHP Version: 4.3.10 -Assigned To: +Assigned To: stas
Previous Comments: ------------------------------------------------------------------------ [2004-12-31 19:46:59] hawk at pld-linux dot org The bug affects only PPC systems with older GCC which don't support va_copy (sorry, didn't noticed this earlier), the workaround is to change line 776 of zend.c: usr_copy = args; into memcpy(usr_copy, args, sizeof(va_list)); for these architectures. It seems to work perfectly ------------------------------------------------------------------------ [2004-12-30 22:03:06] hawk at pld-linux dot org Description: ------------ The compilation of PHP 4.3.10 fails on Linux running on PowerPC with following error: /home/users/builder/rpm/BUILD/php-4.3.10/Zend/zend.c -o Zend/zend.lo /home/users/builder/rpm/BUILD/php-4.3.10/Zend/zend.c: In function `zend_error': /home/users/builder/rpm/BUILD/php-4.3.10/Zend/zend.c:776: incompatible types in assignment make: *** [Zend/zend.lo] Error 1 Following code change is reponsible for this bug: cvs diff -u -r 1.162.2.21 -r 1.162.2.22 Zend/zend.c Line 776 is: usr_copy = args; where both usr_copy and args are of type va_list. Such code will not compile on Linux on PowerPC (and probably on some other architectures too) because va_list is struct here. I know only two ways for fixing it. One is to use va_copy, but I'm not sure if its safe to change following portion of code: #if defined(va_copy) va_copy(usr_copy, args); #else usr_copy = args; #endif just into: va_copy(usr_copy, args); Probably its not safe. The second way is to use usr_copy[0] = args[0]; for the affected architectures, but its not safe either AFAIR. I also suppose that php 5.0.3 is affected too, because it contains same code ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=31358&edit=1