php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #31121 Compilation fails on zend_strtod.c
Submitted: 2004-12-16 12:46 UTC Modified: 2004-12-22 11:02 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: strube at physik3 dot gwdg dot de Assigned: derick (profile)
Status: Closed Package: Compile Failure
PHP Version: 4.3.10 OS: Solaris 7 SPARC
Private report: No CVE-ID: None
 [2004-12-16 12:46 UTC] strube at physik3 dot gwdg dot de
Description:
------------
Compilation of zend_strtod.c fails in Solaris 7 with Sun Workshop 5.0 compiler. There are two reasons:
(1) IEEE_*_ENDIAN does not get defined.
(2) line 246: syntax error before or at: u_int32_t
As for (2), this is almost identical to Bug #30779, but (1) is not reported there.
My ad-hoc patch:
*** Zend/zend_strtod.c.ORI	Tue Dec 14 09:35:26 2004
--- Zend/zend_strtod.c	Thu Dec 16 12:21:54 2004
***************
*** 95,101 ****
  static char *rcsid = "$OpenBSD: strtod.c,v 1.19 2004/02/03 16:52:11 drahn Exp $";
  #endif /* LIBC_SCCS and not lint */
  
! #if defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \
      defined(__mips__) || defined(__ns32k__) || defined(__alpha__) || \
      defined(__powerpc__) || defined(__ppc__) || defined(__m88k__) || \
      defined(__hppa__) || defined(__x86_64__) || (defined(__arm__) && \
--- 95,108 ----
  static char *rcsid = "$OpenBSD: strtod.c,v 1.19 2004/02/03 16:52:11 drahn Exp $";
  #endif /* LIBC_SCCS and not lint */
  
! #if defined(sun) || defined(__sun)
! #include <sys/isa_defs.h>
! #ifdef _BIG_ENDIAN
! #define IEEE_BIG_ENDIAN
! #else
! #define IEEE_LITTLE_ENDIAN
! #endif
! #elif defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \
      defined(__mips__) || defined(__ns32k__) || defined(__alpha__) || \
      defined(__powerpc__) || defined(__ppc__) || defined(__m88k__) || \
      defined(__hppa__) || defined(__x86_64__) || (defined(__arm__) && \
***************
*** 127,133 ****
  #define IEEE_LITTLE_ENDIAN
  #endif
  
! #if defined(__sparc__) || defined(__ppc__)
  #define u_int32_t uint32_t
  #endif
  
--- 134,140 ----
  #define IEEE_LITTLE_ENDIAN
  #endif
  
! #if defined(__sparc__) || defined(__sparc) || defined(__ppc__)
  #define u_int32_t uint32_t
  #endif
  



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-12-17 13:00 UTC] derick@php.net
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-21 10:51 UTC] strube at physik3 dot gwdg dot de
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.
 [2004-12-22 00:45 UTC] sniper@php.net
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

Try again.

 [2004-12-22 00:46 UTC] sniper@php.net
And you're wrong about WORDS_BIGENDIAN. It will NOT be defined at all on a system which is not big-endian.
(not to 0 or not to 1)


 [2004-12-22 09:48 UTC] strube at physik3 dot gwdg dot de
> Please try using this CVS snapshot:
>  http://snaps.php.net/php4-STABLE-latest.tar.gz
Therein (=php4-STABLE-200412171130), zend_strtod.c is no different from the one in 200412210730 I tested previously.

> And you're wrong about WORDS_BIGENDIAN. It will NOT be 
> defined at all on a system which is not big-endian.
Sorry, you are right. I did not actually configure in x86 but concluded this from the php_config.h in the official 4.3.10 release, containing #define WORDS_BIGENDIAN 1. In the present snapshots, it is defined without value.
 [2004-12-22 10:33 UTC] sniper@php.net
I didn't ask you to look if some file is same as it was before. I asked you to try the fresh snapshot. So did it compile or not?

 [2004-12-22 10:57 UTC] strube at physik3 dot gwdg dot de
> I didn't ask you to look if some file is same as it was before. I asked
> you to try the fresh snapshot. So did it compile or not?
As zend_strtod.c is unchanged and compiled with my previous test in Solaris, so will it now. I think the case is solved for Solaris and am not interested in testing the whole snapshot. Also now I can neither continue testing nor reply before January.
 [2004-12-22 11:02 UTC] sniper@php.net
If it's fixed -> closed the bug.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Oct 15 11:01:27 2024 UTC