From 7c110b172c257ab253d317d5ad58f4c557d9cfd9 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Fri, 28 Jul 2000 16:27:55 +0000 Subject: Declare __infinity as an array to work around problems with small data support --- newlib/libc/include/math.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'newlib/libc/include') diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h index cd03945c9..6a6440dc7 100644 --- a/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h @@ -21,13 +21,23 @@ union __dmath double d; }; +/* Declare this as an array without bounds so that no matter what small data + support a port and/or library has, this reference will be via the general + method for accessing globals. + + Also under Cygwin, the library exports a pointer to the real value, so we + need to properly dereference it. */ +#ifndef __INFINITY_DECL__ #if !defined(__CYGWIN__) || defined(__INSIDE_CYGWIN__) || defined(_COMPILING_NEWLIB) -extern const union __dmath __infinity; +#define __INFINITY_DECL__ #else -extern __declspec(dllimport) const union __dmath __infinity; +#define __INFINITY_DECL__ __declspec(dllimport) +#endif #endif -#define HUGE_VAL (__infinity.d) +extern __INFINITY_DECL__ const union __dmath __infinity[]; + +#define HUGE_VAL (__infinity[0].d) #endif /* ! defined (HUGE_VAL) */ -- cgit v1.2.3