ID: 31121 User updated by: strube at physik3 dot gwdg dot de Reported By: strube at physik3 dot gwdg dot de -Status: Feedback +Status: Open Bug Type: Compile Failure Operating System: Solaris 7 SPARC PHP Version: 4.3.10 Assigned To: derick New Comment:
I tested compiling zend_strtod.c from php4-STABLE-200412210730 in Solaris 7 SPARC and Solaris 9_x86 with Sun cc and gcc. All compilations succeed, but in x86, still IEEE_BIG_ENDIAN is erroneously defined. Fix line 104: #ifdef WORDS_BIGENDIAN must be #if WORDS_BIGENDIAN because it is either 1 or 0. Also, on those architectures for which subsequent #define IEEE_..._ENDIAN occur (lines 116 and 126; not in Solaris), there will be warnings or errors concerning redefinition of IEEE_..._ENDIAN (not in Solaris) or failure in the test of line 226 due to definition of both IEEE_{BIG,LITTLE}_ENDIAN. I cannot test on those architectures myself. Previous Comments: ------------------------------------------------------------------------ [2004-12-21 05:53:56] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2004-12-17 14:18:07] strube at physik3 dot gwdg dot de I now tested compilation of zend_strtod.c from snapshot php4-STABLE-200412171130. It works on Solaris 7 SPARC with gcc. It does not work with Sun Workshop/Forte/SunONE cc, since the architecture macros are gcc specific. It also does not work on Solaris 9_x86, even with gcc; although gcc compiles without error, IEEE_BIG_ENDIAN is erroneously assigned (because the test #if BYTE_ORDER == BIG_ENDIAN does not make sense in Solaris). All this could have been deduced from my previous comments. ------------------------------------------------------------------------ [2004-12-17 13:00:29] [EMAIL PROTECTED] We had some problems with our snapshots, the next one (9:30 GMT) should have the updated files. If you can try those, please do so. ------------------------------------------------------------------------ [2004-12-17 09:46:09] strube at physik3 dot gwdg dot de I just found that main/php_config.h already contains the big/little-endian information in WORDS_BIGENDIAN. Why don't you simply include this and test this macro? ------------------------------------------------------------------------ [2004-12-17 09:37:59] strube at physik3 dot gwdg dot de I tried php4-STABLE-latest.tar.gz, i.e. php4-STABLE-200412170730. The zend_strtod.c therein is identical to that of the official 4.3.10 release. Also the configure script is unchanged (apart of the EXTRA_VERSION). Thus this does not fix anything. As a general remark, architecture macros like __sparc__ and __i386__ are gcc specific. Suns Workshop/Forte/SunONE compilers define __sparc and __i386, respectively, for the architecture. (Likewise, the SGI IRIX compilers do not define __mips__). Also Solaris does not define BYTE_ORDER and BIG_ENDIAN (or LITTLE_ENDIAN)in sys/types.h (only in arpa/nameser_compat.h, not normally included) but _BIG_ENDIAN (or _LITTLE_ENDIAN) in sys/isa_defs.h, also included by sys/types.h. Instead of using [_]BYTE_ORDER, the big/little decision could have been directly based on the architectures. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/31121 -- Edit this bug report at http://bugs.php.net/?id=31121&edit=1