* [PATCH] _BSD_SOURCE in math.h; MAXFLOAT is XOPEN only
@ 2012-04-06 5:32 Isaac Dunham
2012-04-06 13:14 ` Rich Felker
0 siblings, 1 reply; 3+ messages in thread
From: Isaac Dunham @ 2012-04-06 5:32 UTC (permalink / raw)
To: musl
[-- Attachment #1: Type: text/plain, Size: 479 bytes --]
This is pretty minor for the most part.
There was one issue I noticed:
_GNU_SOURCE defines MAXFLOAT here, but glibc only defines it if
_USE_SVID is not defined (I'm not copy-pasting here, I cleaned it
up):
#ifdef _USE_SVID //defined as 1 if _GNU_SOURCE is
..
# define HUGE //Same value as MAXFLOAT
#else
#ifdef _XOPEN_SOURCE
# define MAXFLOAT //ifndef _USE_SVID
#endif
#endif //SVID
So I moved it so _GNU_SOURCE doesn't add it, and I
added HUGE to _GNU_SOURCE...
Isaac Dunham
[-- Attachment #2: math.diff --]
[-- Type: text/x-patch, Size: 1252 bytes --]
diff --git a/include/math.h b/include/math.h
index ff62cb7..85ef634 100644
--- a/include/math.h
+++ b/include/math.h
@@ -330,8 +330,7 @@ double trunc(double);
float truncf(float);
long double truncl(long double);
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
-#define MAXFLOAT 3.40282347e+38F
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define M_E 2.7182818284590452354 /* e */
#define M_LOG2E 1.4426950408889634074 /* log_2 e */
#define M_LOG10E 0.43429448190325182765 /* log_10 e */
@@ -345,7 +344,13 @@ long double truncl(long double);
#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
+#endif
+#if defined(_XOPEN_SOURCE)
+#define MAXFLOAT 3.40282347e+38F
+#endif
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
extern int signgam;
double j0(double);
@@ -358,6 +363,7 @@ double yn(int, double);
#endif
#ifdef _GNU_SOURCE
+#define HUGE 3.40282347e+38F
double scalb(double, double);
float scalbf(float, float);
long double scalbl(long double, long double);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] _BSD_SOURCE in math.h; MAXFLOAT is XOPEN only
2012-04-06 5:32 [PATCH] _BSD_SOURCE in math.h; MAXFLOAT is XOPEN only Isaac Dunham
@ 2012-04-06 13:14 ` Rich Felker
2012-04-06 15:26 ` Isaac Dunham
0 siblings, 1 reply; 3+ messages in thread
From: Rich Felker @ 2012-04-06 13:14 UTC (permalink / raw)
To: musl
On Thu, Apr 05, 2012 at 10:32:27PM -0700, Isaac Dunham wrote:
> This is pretty minor for the most part.
> There was one issue I noticed:
> _GNU_SOURCE defines MAXFLOAT here, but glibc only defines it if
I'll add HUGE for _GNU_SOURCE, but I don't see any reason to duplicate
the other ugly logic which was probably just a mistake anyway.
To clarify the general policy: In musl, _GNU_SOURCE or _BSD_SOURCE
should not break or remove functionality specified by the actual
standards. They should just add the missing nonstandard stuff
associated with GNU or BSD.
Further, so far _GNU_SOURCE has been a superset of _XOPEN_SOURCE (i.e.
anything under defined(_XOPEN_SOURCE) has ||defined(_GNU_SOURCE) with
it). If it turns out this is a bad idea, I'm not entirely opposed to
changing that, but just matching the exact set of definitions provided
by glibc for its own sake is not a good enough reason to change. The
goal is always compatibility with applications, not matching glibc.
Rich
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] _BSD_SOURCE in math.h; MAXFLOAT is XOPEN only
2012-04-06 13:14 ` Rich Felker
@ 2012-04-06 15:26 ` Isaac Dunham
0 siblings, 0 replies; 3+ messages in thread
From: Isaac Dunham @ 2012-04-06 15:26 UTC (permalink / raw)
To: musl
On Fri, 6 Apr 2012 09:14:48 -0400
Rich Felker <dalias@aerifal.cx> wrote:
> On Thu, Apr 05, 2012 at 10:32:27PM -0700, Isaac Dunham wrote:
> > This is pretty minor for the most part.
> > There was one issue I noticed:
> > _GNU_SOURCE defines MAXFLOAT here, but glibc only defines it if
..
> To clarify the general policy: In musl, _GNU_SOURCE or _BSD_SOURCE
> should not break or remove functionality specified by the actual
> standards. They should just add the missing nonstandard stuff
> associated with GNU or BSD.
The patch does not copy glibc logic, since I agree with that policy:
+#if defined(_XOPEN_SOURCE)
+#define MAXFLOAT 3.40282347e+38F
+#endif
+
I agree entirely with not removing functionality when a legacy _SOURCE
macro is defined; but...
> Further, so far _GNU_SOURCE has been a superset of _XOPEN_SOURCE (i.e.
> anything under defined(_XOPEN_SOURCE) has ||defined(_GNU_SOURCE) with
> it). If it turns out this is a bad idea, I'm not entirely opposed to
> changing that, but just matching the exact set of definitions provided
> by glibc for its own sake is not a good enough reason to change. The
> goal is always compatibility with applications, not matching glibc.
I excluded _GNU_SOURCE in this one case because for some reason, GNU
wants to exclude MAXFLOAT in favor of HUGE--the excerpt:
#else /* !SVID */
# ifdef __USE_XOPEN
/* X/Open wants another strange constant. */
# define MAXFLOAT 3.40282347e+38F
# endif
#endif /* SVID */
I think that using SVID interfaces in favor of X/Open is brain-damaged,
but I'm not interested in automatically defining something if
_GNU_SOURCE is defined when GNU takes pains to exclude it under the
same conditions; that approach is deliberate breakage.
Unlike glibc, -D_XOPEN_SOURCE -D_GNU_SOURCE still activates the full
X/Open logic with this patch.
Isaac Dunham
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-04-06 15:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-06 5:32 [PATCH] _BSD_SOURCE in math.h; MAXFLOAT is XOPEN only Isaac Dunham
2012-04-06 13:14 ` Rich Felker
2012-04-06 15:26 ` Isaac Dunham
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).