summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2015-03-24 00:11:47 +0100
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2015-03-24 00:11:47 +0100
commit730db44f0824f505a31822e250b9f04b9f8e7a1b (patch)
treedce88cad39bf3bcb40d2c9a5df671f9b4961db50
parent272e4fa4d38440d5c01259fce7d74f8c0a9d300f (diff)
libm: honor NO_LONG_DOUBLE in ldouble_wrappers
Fixes SH build breakage due to attempts to define hidden defs for unavailable long double functions. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r--extra/Configs/Config.in.arch2
-rw-r--r--ldso/ldso/sh/dl-syscalls.h2
-rw-r--r--libm/ldouble_wrappers.c15
3 files changed, 11 insertions, 8 deletions
diff --git a/extra/Configs/Config.in.arch b/extra/Configs/Config.in.arch
index 68e03bf9e..0dae84b06 100644
--- a/extra/Configs/Config.in.arch
+++ b/extra/Configs/Config.in.arch
@@ -191,7 +191,7 @@ config UCLIBC_HAS_FENV
config UCLIBC_HAS_LONG_DOUBLE_MATH
bool "Enable long double support"
depends on DO_C99_MATH
- depends on TARGET_i386 || TARGET_m68k || TARGET_sparc || TARGET_x86_64 || TARGET_powerpc || TARGET_sh || TARGET_microblaze || TARGET_xtensa
+ depends on TARGET_aarch64 || TARGET_alpha || TARGET_i386 || TARGET_ia64 || TARGET_m68k || TARGET_powerpc || TARGET_s390 || TARGET_sparc || TARGET_tile || TARGET_x86_64
default y
help
If you want the uClibc math library to contain the full set of C99
diff --git a/ldso/ldso/sh/dl-syscalls.h b/ldso/ldso/sh/dl-syscalls.h
index f9f13c7fa..b99a9b5a0 100644
--- a/ldso/ldso/sh/dl-syscalls.h
+++ b/ldso/ldso/sh/dl-syscalls.h
@@ -1,4 +1,4 @@
-#if __GNUC_PREREQ (4, 1)
+#if __GNUC_PREREQ (4, 1) && !__GNUC_PREREQ (4, 9)
#warning !!! gcc 4.1 and later have problems with __always_inline so redefined as inline
# ifdef __always_inline
# undef __always_inline
diff --git a/libm/ldouble_wrappers.c b/libm/ldouble_wrappers.c
index b4215cbf3..840293fe6 100644
--- a/libm/ldouble_wrappers.c
+++ b/libm/ldouble_wrappers.c
@@ -16,27 +16,28 @@
#include "math.h"
#include <complex.h>
-#define WRAPPER1(func) \
+#if !defined __NO_LONG_DOUBLE_MATH
+# define WRAPPER1(func) \
long double func##l(long double x) \
{ \
return (long double) func((double) x); \
}
-#define WRAPPER2(func) \
+# define WRAPPER2(func) \
long double func##l(long double x, long double y) \
{ \
return (long double) func((double) x, (double) y); \
}
-#define int_WRAPPER1(func) \
+# define int_WRAPPER1(func) \
int func##l(long double x) \
{ \
return func((double) x); \
}
-#define long_WRAPPER1(func) \
+# define long_WRAPPER1(func) \
long func##l(long double x) \
{ \
return func((double) x); \
}
-#define long_long_WRAPPER1(func) \
+# define long_long_WRAPPER1(func) \
long long func##l(long double x) \
{ \
return func((double) x); \
@@ -447,4 +448,6 @@ int_WRAPPER1(__isinf)
libm_hidden_def(__isinfl)
# endif
-#endif
+#endif /* __DO_C99_MATH__ */
+
+#endif /* __NO_LONG_DOUBLE_MATH */