ID:               31358
 User updated by:  hawk at pld-linux dot org
-Summary:          Compile time error, incompatible types in assignment
 Reported By:      hawk at pld-linux dot org
 Status:           Open
 Bug Type:         Compile Failure
-Operating System: PLD Linux running on PowerPC
+Operating System: PLD Linux 1.0 running on PowerPC
 PHP Version:      4.3.10
 New Comment:

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


Previous Comments:
------------------------------------------------------------------------

[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

Reply via email to