|
@@ -0,0 +1,89 @@
|
|
|
+From 730db44f0824f505a31822e250b9f04b9f8e7a1b Mon Sep 17 00:00:00 2001
|
|
|
+From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
|
|
+Date: Tue, 24 Mar 2015 00:11:47 +0100
|
|
|
+Subject: [PATCH] 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>
|
|
|
+[Gustavo: adapt to 0.9.33.2]
|
|
|
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
|
+---
|
|
|
+ extra/Configs/Config.in.arch | 2 +-
|
|
|
+ ldso/ldso/sh/dl-syscalls.h | 2 +-
|
|
|
+ libm/ldouble_wrappers.c | 15 +++++++++------
|
|
|
+ 3 files changed, 11 insertions(+), 8 deletions(-)
|
|
|
+
|
|
|
+diff --git a/extra/Configs/Config.in.arch b/extra/Configs/Config.in.arch
|
|
|
+index 68e03bf..0dae84b 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
|
|
|
++ 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 f9f13c7..b99a9b5 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 b4215cb..840293f 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 */
|
|
|
+--
|
|
|
+2.0.5
|
|
|
+
|