Skip to contentSkip to conversation

uclibc: unbreak SH & SPARC

PATCH New Gustavo Zacarias 2 participants 6 messages Apr 16, 2015 – Apr 18, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 uclibc: unbreak SH & SPARC

The patch from commit 200aad4f3206c9f151f15922dd02b01f474a5503 broke sh and sparc builds.
Add and adjust a patch from uClibc master that fixes this.

---
 ...-honor-NO_LONG_DOUBLE-in-ldouble_wrappers.patch | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 package/uclibc/0.9.33.2/0070-libm-honor-NO_LONG_DOUBLE-in-ldouble_wrappers.patch
package/uclibc/0.9.33.2/0070-libm-honor-NO_LONG_DOUBLE-in-ldouble_wrappers.patch new file +89 -0
new file mode 100644
index 0000000..1b6ea6d
@@ -0,0 +1,89 @@
+From 730db44f0824f505a31822e250b9f04b9f8e7a1b Mon Sep 17 00:00:00 2001
+From: Bernhard Reutner-Fischer <[email protected]>
+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 <[email protected]>
+[Gustavo: adapt to 0.9.33.2]
+Signed-off-by: Gustavo Zacarias <[email protected]>
+---
+ 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
+
Signature · 1 line
2.0.5
#1 lore raw

PATCH 2/2 uclibc: drop -ng 1.0.0 stray patch

---
 ...-guard-tcb-offsets.h-include-with-RESET_P.patch | 31 ----------------------
 1 file changed, 31 deletions(-)
 delete mode 100644 package/uclibc/1.0.0/0001-sparc-clone.S-guard-tcb-offsets.h-include-with-RESET_P.patch
package/uclibc/1.0.0/0001-sparc-clone.S-guard-tcb-offsets.h-include-with-RESET_P.patch deleted +0 -31
deleted file mode 100644
index a98ee68..0000000
@@ -1,31 +0,0 @@
-From 857420a3271dc5bbddbe45a9e9878b9dc88fd143 Mon Sep 17 00:00:00 2001
-From: Gustavo Zacarias <[email protected]>
-Date: Tue, 3 Mar 2015 14:56:17 -0300
-Subject: [PATCH] sparc/clone.S: guard tcb-offsets.h include with RESET_PID
-
-Status: upstream [uClibc]
-
-Otherwise we have a broken scenario with non-threading builds.
-
-Signed-off-by: Gustavo Zacarias <[email protected]>
----
- libc/sysdeps/linux/sparc/clone.S | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libc/sysdeps/linux/sparc/clone.S b/libc/sysdeps/linux/sparc/clone.S
-index 8d9da5a..1d0e3e6 100644
---- a/libc/sysdeps/linux/sparc/clone.S
-+++ b/libc/sysdeps/linux/sparc/clone.S
-@@ -22,7 +22,9 @@
- 
- #include <asm/errno.h>
- #include <asm/unistd.h>
-+#ifdef RESET_PID
- #include <tcb-offsets.h>
-+#endif
- #include <sysdep.h>
- 
- #define CLONE_VM	0x00000100
--- 
-2.0.5
-
Signature · 1 line
2.0.5
#2 lore raw

PATCH 2/2 uclibc: drop -ng 1.0.0 stray patch

Dear Gustavo Zacarias,

Quoted 5 lines · Gustavo Zacarias
---
 ...-guard-tcb-offsets.h-include-with-RESET_P.patch | 31 ----------------------
 1 file changed, 31 deletions(-)
 delete mode 100644 package/uclibc/1.0.0/0001-sparc-clone.S-guard-tcb-offsets.h-include-with-RESET_P.patch

Applied, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH 1/2 uclibc: unbreak SH & SPARC

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 9 lines · Gustavo Zacarias

The patch from commit 200aad4f3206c9f151f15922dd02b01f474a5503 broke sh and sparc builds.
Add and adjust a patch from uClibc master that fixes this.

---
 ...-honor-NO_LONG_DOUBLE-in-ldouble_wrappers.patch | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 package/uclibc/0.9.33.2/0070-libm-honor-NO_LONG_DOUBLE-in-ldouble_wrappers.patch

Applied, thanks.

Waldemar, is this patch also needed for uClibc-ng ?

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH 1/2 uclibc: unbreak SH & SPARC

Quoted 3 lines · Thomas Petazzoni

Applied, thanks.

Waldemar, is this patch also needed for uClibc-ng ?

1.0.1 didn't have the offending patch applied, and 1.0.2 already includes it, so no need to touch anything for -ng. Regards.

#5 lore raw

PATCH 1/2 uclibc: unbreak SH & SPARC

Dear Gustavo Zacarias,

Quoted 2 lines · Gustavo Zacarias

1.0.1 didn't have the offending patch applied, and 1.0.2 already includes it, so no need to touch anything for -ng.

Great, thanks for the confirmation!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com