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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: strube at physik3 dot gwdg dot de
New email:
PHP Version: OS:

 

 [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: Sat Dec 21 13:01:31 2024 UTC