* replaced broken bsd-inherited implementation of strtod() with the glibc
version that lives in our repo, too, and actually works as intended * removed the broken strtod() implementation from the repo This fixes all floating-point test regressions reported in #3308. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31919 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4,8 +4,11 @@ SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch $(TARGET_
|
|||||||
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch generic ;
|
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include arch generic ;
|
||||||
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include ;
|
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc include ;
|
||||||
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
|
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc locale ;
|
||||||
|
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc stdlib ;
|
||||||
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
|
SubDirSysHdrs $(HAIKU_TOP) src system libroot posix glibc ;
|
||||||
|
|
||||||
|
SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ;
|
||||||
|
|
||||||
MergeObject posix_gnu_stdlib.o :
|
MergeObject posix_gnu_stdlib.o :
|
||||||
drand48.c
|
drand48.c
|
||||||
drand48_r.c
|
drand48_r.c
|
||||||
@@ -32,6 +35,8 @@ MergeObject posix_gnu_stdlib.o :
|
|||||||
seed48_r.c
|
seed48_r.c
|
||||||
srand48.c
|
srand48.c
|
||||||
srand48_r.c
|
srand48_r.c
|
||||||
|
strtod.c
|
||||||
|
strtof.c
|
||||||
wcstombs.c
|
wcstombs.c
|
||||||
wctomb.c
|
wctomb.c
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
} while (0)
|
} while (0)
|
||||||
#endif
|
#endif
|
||||||
/* End of configuration part. */
|
/* End of configuration part. */
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
# define ISDIGIT(Ch) isdigit (Ch)
|
# define ISDIGIT(Ch) isdigit (Ch)
|
||||||
# define ISXDIGIT(Ch) isxdigit (Ch)
|
# define ISXDIGIT(Ch) isxdigit (Ch)
|
||||||
# define TOLOWER(Ch) tolower (Ch)
|
# define TOLOWER(Ch) tolower (Ch)
|
||||||
# define STRNCASECMP(S1, S2, N) __strncasecmp ((S1), (S2), (N))
|
# define STRNCASECMP(S1, S2, N) strncasecmp ((S1), (S2), (N))
|
||||||
# define STRTOULL(S, E, B) __strtoull_internal ((S), (E), 0, (B))
|
# define STRTOULL(S, E, B) __strtoull_internal ((S), (E), 0, (B))
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
/* Function to construct a floating point number from an MP integer
|
/* Function to construct a floating point number from an MP integer
|
||||||
containing the fraction bits, a base 2 exponent, and a sign flag. */
|
containing the fraction bits, a base 2 exponent, and a sign flag. */
|
||||||
extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
|
extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
|
||||||
|
|
||||||
/* Definitions according to limb size used. */
|
/* Definitions according to limb size used. */
|
||||||
#if BITS_PER_MP_LIMB == 32
|
#if BITS_PER_MP_LIMB == 32
|
||||||
# define MAX_DIG_PER_LIMB 9
|
# define MAX_DIG_PER_LIMB 9
|
||||||
@@ -179,7 +179,7 @@ static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
|
|||||||
#error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
|
#error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef howmany
|
#ifndef howmany
|
||||||
#define howmany(x,y) (((x)+((y)-1))/(y))
|
#define howmany(x,y) (((x)+((y)-1))/(y))
|
||||||
#endif
|
#endif
|
||||||
@@ -1560,7 +1560,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
|
|||||||
|
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* External user entry point. */
|
/* External user entry point. */
|
||||||
|
|
||||||
FLOAT
|
FLOAT
|
||||||
@@ -1574,3 +1574,18 @@ STRTOF (nptr, endptr LOCALE_PARAM)
|
|||||||
{
|
{
|
||||||
return INTERNAL (STRTOF) (nptr, endptr, 0 LOCALE_PARAM);
|
return INTERNAL (STRTOF) (nptr, endptr, 0 LOCALE_PARAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// XXX this is not correct
|
||||||
|
|
||||||
|
long double __strtold_internal(const char *number, char **_end, int group);
|
||||||
|
|
||||||
|
long double
|
||||||
|
#ifdef weak_function
|
||||||
|
weak_function
|
||||||
|
#endif
|
||||||
|
__strtold_internal(const char *number, char **_end, int group)
|
||||||
|
{
|
||||||
|
return __strtod_internal(number, _end, group);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ MergeObject posix_stdlib.o :
|
|||||||
rand.c
|
rand.c
|
||||||
random.c
|
random.c
|
||||||
realpath.cpp
|
realpath.cpp
|
||||||
strtod.c
|
# strtod.c
|
||||||
strtol.c
|
strtol.c
|
||||||
strtoll.c
|
strtoll.c
|
||||||
strtoul.c
|
strtoul.c
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user