[Patches] [ python-Patches-968728 ] Py_HUGE_VAL HUGE_VAL HUGE
undefined
SourceForge.net
noreply at sourceforge.net
Thu Dec 23 19:40:36 CET 2004
Patches item #968728, was opened at 2004-06-08 08:48
Message generated for change (Comment added) made by cross
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=968728&group_id=5470
Category: Core (C code)
Group: Python 2.3
Status: Closed
Resolution: Wont Fix
Priority: 5
Submitted By: Michael Schloh von Bennewitz (michaesc)
Assigned to: Nobody/Anonymous (nobody)
Summary: Py_HUGE_VAL HUGE_VAL HUGE undefined
Initial Comment:
In Python 2.3.4 (as well as the trunk revision on CVS), Py_HUGE_VAL
is conditionally defined as HUGE_VAL. On at least Solaris 10 x86 and
Solaris 10 SPARC, this causes a build failure.
I'm ashamed to say that I wasn't able to 100% diagnose this problem (I
didn't have time). My first guess was that somehow HUGE_VAL was not
getting properly defined on Solaris 10 due to its rewritten
/usr/include/iso/math_iso.h file (now conditionally defining HUGE_VAL
depending on a _STDC_C99 and _XOPEN_SOURCE definition).
Because I noticed that the identifier HUGE is unconditionally defined
on Solaris 10 and seemingly all earlier Solaris releases, I tried using
that instead and the build problem disappeared.
You can make your own conclusion as to whether my fix is correct, or if
there is a better way to solve this problem. There may be a faulty
assumption made by configure or in some Makefile of how the compiler
is being used, or maybe python depends on a certain GCC release.
CC: GCC 3.4.0
CXX: GCC 3.4.0
CFLAGS: -O2 -pipe
CXXFLAGS: -O2 -pipe
CPPFLAGS: None
Make: GNU Make 3.80
LDFLAGS: None
mich at dev:/tmp/Python-2.3.4$ ./configure --prefix=/cw
checking MACHDEP... freebsd4
checking EXTRAPLATDIR...
checking for --without-gcc... no
checking for --with-cxx=<compiler>... no
...
The OpenPKG Python package and patch:
http://cvs.openpkg.org/dir?d=openpkg-src/python
http://cvs.openpkg.org/rlog?f=openpkg-src/python/python.patch
Lots of luck, and thanks for maintaining Python.
Regards,
Michael, OpenPKG
http://www.openpkg.org/
----------------------------------------------------------------------
Comment By: Chris P. Ross (cross)
Date: 2004-12-23 18:40
Message:
Logged In: YES
user_id=12814
Oops. My bad. I failed to mention that I'm using gcc 3.4.x
on Solaris 10. I assume those options are for the Forte
suite (or whatever they're calling it now).
Hmm. I wonder how to tell sun that they're header isn't
compliant? I wonder if it fails in the same way with Forte?
I should try to find out... It *is* a beta OS after-all. :-)
Thanks!
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2004-12-23 18:09
Message:
Logged In: YES
user_id=31435
>From C99:
"""
The macro
HUGE_VAL
expands to a positive double constant expression, not
necessarily representable as a float.
...
(footnote) HUGE_VAL, HUGE_VALF, and HUGE_VALL can be
positive infinities in an implementation that
supports infinities.
"""
Of course a function pointer is not "a positive double
constant expression", so doesn't meet the standard's
requirements.
Some Googling suggested that the "-Xc or -Xa compliation
options" may be needed to get standard behavior on Solaris,
but that's just hearsay and I really have no idea. Reports of
HUGE_VAL creating compilation problems on Solaris for other
projects are also easy to find.
----------------------------------------------------------------------
Comment By: Chris P. Ross (cross)
Date: 2004-12-23 17:43
Message:
Logged In: YES
user_id=12814
Hi. I found this today as well. However, a little research
shows that what it's defined to (__builtin_huge_val) is
actually a function pointer, not a number. So, if I changed
Py_HUGE_VAL to be #def'd to HUGE_VAL(), it worked just find
on my Solaris 10 machine.
What does the c89 and c99 spec say that HUGE_VAL macro
should be? A number? Or is having it be a function
reference legal?
----------------------------------------------------------------------
Comment By: Hye-Shik Chang (perky)
Date: 2004-07-17 14:05
Message:
Logged In: YES
user_id=55188
This doesn't look like a bug in Python per Tim's comment.
(Reviewed by Seo Sanghyeon and me at KLDP CodeFest)
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2004-06-08 19:02
Message:
Logged In: YES
user_id=31435
I don't see a reason to call this a Python bug. The C89 and
C99 standards both require that math.h supply the HUGE_VAL
macro. If the compilation system you're using doesn't do so,
it's a bug in that system, and should be fixed there. Python
doesn't ask for much, but does require an ANSI C compiler.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=968728&group_id=5470
More information about the Patches
mailing list