summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2013-10-27 12:50:06 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2013-10-27 12:50:06 +0100
commitc975ab62fbe7f7e9141a24cc033fb8f0e52ca823 (patch)
tree064cc48f28728c37a8af6b62e7ae3696f920d13a
parent132384e7ff9490ba20648f0189edd23b8e8fcbc1 (diff)
fix eglibc qemu-sparc builds, -Os does not work for this
-rw-r--r--toolchain/eglibc/Makefile12
-rw-r--r--toolchain/eglibc/patches/sparc-libm.patch84
2 files changed, 93 insertions, 3 deletions
diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile
index b9be77579..12f193c3b 100644
--- a/toolchain/eglibc/Makefile
+++ b/toolchain/eglibc/Makefile
@@ -3,12 +3,18 @@
include $(TOPDIR)/rules.mk
include ../rules.mk
-include Makefile.inc
-include ${TOPDIR}/mk/buildhlp.mk
-# ssp partially supported
+# eglibc does not compile with Os on sparc
+ifeq ($(ADK_LINUX_SPARC),y)
+TARGET_CFLAGS_LIBC:= $(subst Os,O2,$(TARGET_CFLAGS))
+endif
+
+# ssp not supported
TARGET_CFLAGS_LIBC:= $(filter-out -fstack-protector,$(TARGET_CFLAGS_LIBC))
+include Makefile.inc
+include ${TOPDIR}/mk/buildhlp.mk
+
ifeq ($(ADK_TARGET_NO_FPU),y)
EGLIBC_CONFOPTS+= --without-fp
endif
diff --git a/toolchain/eglibc/patches/sparc-libm.patch b/toolchain/eglibc/patches/sparc-libm.patch
new file mode 100644
index 000000000..fc8b4cc36
--- /dev/null
+++ b/toolchain/eglibc/patches/sparc-libm.patch
@@ -0,0 +1,84 @@
+diff -Nur eglibc-2.18.orig/libc/sysdeps/sparc/sparc32/fpu/s_fdimf.S eglibc-2.18/libc/sysdeps/sparc/sparc32/fpu/s_fdimf.S
+--- eglibc-2.18.orig/libc/sysdeps/sparc/sparc32/fpu/s_fdimf.S 2013-09-13 10:20:20.000000000 +0200
++++ eglibc-2.18/libc/sysdeps/sparc/sparc32/fpu/s_fdimf.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,35 +0,0 @@
+-/* Compute positive difference, sparc 32-bit.
+- Copyright (C) 2013 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+- Contributed by David S. Miller <davem@davemloft.net>.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, see
+- <http://www.gnu.org/licenses/>. */
+-
+-#include <sysdep.h>
+-
+-ENTRY(__fdimf)
+- st %o0, [%sp + 72]
+- st %o1, [%sp + 76]
+- ld [%sp + 72], %f0
+- ld [%sp + 76], %f1
+- fcmps %f0, %f1
+- fbug 1f
+- st %g0, [%sp + 72]
+- ld [%sp + 72], %f0
+- fnegs %f0, %f1
+-1: retl
+- fsubs %f0, %f1, %f0
+-END(__fdimf)
+-weak_alias (__fdimf, fdimf)
+diff -Nur eglibc-2.18.orig/libc/sysdeps/sparc/sparc32/fpu/s_fdim.S eglibc-2.18/libc/sysdeps/sparc/sparc32/fpu/s_fdim.S
+--- eglibc-2.18.orig/libc/sysdeps/sparc/sparc32/fpu/s_fdim.S 2013-09-13 10:20:20.000000000 +0200
++++ eglibc-2.18/libc/sysdeps/sparc/sparc32/fpu/s_fdim.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,41 +0,0 @@
+-/* Compute positive difference, sparc 32-bit.
+- Copyright (C) 2013 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+- Contributed by David S. Miller <davem@davemloft.net>.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, see
+- <http://www.gnu.org/licenses/>. */
+-
+-#include <sysdep.h>
+-#include <math_ldbl_opt.h>
+-
+-ENTRY(__fdim)
+- std %o0, [%sp + 72]
+- std %o2, [%sp + 80]
+- ldd [%sp + 72], %f0
+- ldd [%sp + 80], %f2
+- fcmpd %f0, %f2
+- st %g0, [%sp + 72]
+- fbug 1f
+- st %g0, [%sp + 76]
+- ldd [%sp + 72], %f0
+- fnegd %f0, %f2
+-1: retl
+- fsubd %f0, %f2, %f0
+-END(__fdim)
+-weak_alias (__fdim, fdim)
+-
+-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
+-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
+-#endif