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

Reply via email to