mailing list of musl libc
 help / color / mirror / code / Atom feed
* [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).