ID:               37062
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jan dot rous at matfyz dot cz
-Status:           Feedback
+Status:           Closed
 Bug Type:         Compile Failure
 Operating System: Linux/Debian
 PHP Version:      5.1.2
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




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

[2006-04-13 08:54:48] [EMAIL PROTECTED]

Please send a patch in unified diff format.
And if possible - provide an account on such a rare platform.

------------------------------------------------------------------------

[2006-04-12 23:52:07] jan dot rous at matfyz dot cz

Description:
------------
Compilation on little endian arm (armv5l, XScale) fails on
Zend/zend_strtod.c due to IEEE_LITTLE_ENDIAN and IEE_BIG_ENDIAN both
being defined:

defines come from Zend/zend_strtod.c:
    120 #ifdef WORDS_BIGENDIAN
    121 #define IEEE_BIG_ENDIAN
    122 #else
    123 #define IEEE_LITTLE_ENDIAN
    124 #endif
...
    126 #if defined(__arm__) && !defined(__VFP_FP__)
    127 /*
    128  * Although the CPU is little endian the FP has different
    129  * byte and word endianness. The byte order is still little
endian
    130  * but the word order is big endian.
    131  */
    132 #define IEEE_BIG_ENDIAN
    133 #endif

and result with errors later on:
    238 #if defined(IEEE_LITTLE_ENDIAN) + defined(IEEE_BIG_ENDIAN) +
defined(VAX) + \
    239     defined(IBM) != 1
    240 Exactly one of IEEE_LITTLE_ENDIAN IEEE_BIG_ENDIAN, VAX, or
    241 IBM should be defined.
    242 #endif


1. such invalid state should be reported using #warning,#error
directives. Writing it this way gives ugly errors:

/root/php5-5.1.2.debpkg/Zend/zend_strtod.c:240: error: syntax error
before "one"
/root/php5-5.1.2.debpkg/Zend/zend_strtod.c:241: error: syntax error
before "IBM"
/root/php5-5.1.2.debpkg/Zend/zend_strtod.c:247: error: syntax error
before '}' token
/root/php5-5.1.2.debpkg/Zend/zend_strtod.c:247: warning: data
definition has no type or storage class
/root/php5-5.1.2.debpkg/Zend/zend_strtod.c: In function `ulp':
/root/php5-5.1.2.debpkg/Zend/zend_strtod.c:935: error: syntax error
before "x"
...

2. commenting out offending section with #warning compilation went
without errors.
make test had some failures, but their relation to this is uncertain.

3. as i've looked through the code, I've noticed that although both
IEEE_BIG_ENDIAN IEEE_LITTLE_ENDIAN are defined, 
#if defined(LITTLE_ENDIAN) ... #else ... #endif
are used for decisions. 

Under the light of these observations I find lines 126-133 useless on
little endian arms without __VFP_FP__ as they only break compilation.





------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=37062&edit=1

Reply via email to