summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core
diff options
context:
space:
mode:
authorAndre McCurdy <armccurdy@gmail.com>2015-08-05 17:30:26 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-12-08 13:27:30 +0000
commit442518efac00c6ecb4d914f5230c47137ac89ee5 (patch)
treead022952bbdd38448116d19a801ed898d79c17d7 /meta/recipes-core
parentafff53db2a3b8da2df89f4ba28a02f25e3b93a3f (diff)
downloadast2050-yocto-poky-442518efac00c6ecb4d914f5230c47137ac89ee5.zip
ast2050-yocto-poky-442518efac00c6ecb4d914f5230c47137ac89ee5.tar.gz
uclibc: backport upstream fix for SH4
Backport upstream fix for building uclibc for SH4 with recent gcc: http://git.uclibc.org/uClibc/commit/?id=2c8a7766681b704e710f51c0817534e3f9a952d1 (From OE-Core rev: 6077f09f76b05b002f21e14c62c7c986db5427a9) Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (From OE-Core master rev: aa20c3d) Signed-off-by: Joshua Lock <joshua.lock@collabora.co.uk> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core')
-rw-r--r--meta/recipes-core/uclibc/uclibc-git.inc1
-rw-r--r--meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch48
2 files changed, 49 insertions, 0 deletions
diff --git a/meta/recipes-core/uclibc/uclibc-git.inc b/meta/recipes-core/uclibc/uclibc-git.inc
index 8308e60..3c48940 100644
--- a/meta/recipes-core/uclibc/uclibc-git.inc
+++ b/meta/recipes-core/uclibc/uclibc-git.inc
@@ -25,5 +25,6 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master \
file://0002-wire-setns-syscall.patch \
file://0001-Define-IPTOS_CLASS_-macros-according-to-RFC-2474.patch \
file://0001-timex-Sync-with-glibc.patch \
+ file://ldso-mark-_dl_exit-as-noreturn.patch \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch b/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch
new file mode 100644
index 0000000..5279f8a
--- /dev/null
+++ b/meta/recipes-core/uclibc/uclibc-git/ldso-mark-_dl_exit-as-noreturn.patch
@@ -0,0 +1,48 @@
+From 2c8a7766681b704e710f51c0817534e3f9a952d1 Mon Sep 17 00:00:00 2001
+From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+Date: Thu, 26 Mar 2015 00:02:58 +0100
+Subject: [PATCH] ldso: mark _dl_exit as noreturn
+
+Otherwise gcc might not understand that oom() ended control-flow and
+might emit an (untaken) reference to abort() in _dl_update_slotinfo()
+on e.g. SH4 which breaks linking ld-uClibc.so.
+Arguably -ffreestanding should prevent GCC from emitting this
+'.global abort' but alas, it does not, which is another bug..
+
+Also mark the function cold to further lower the incoming frequency and
+branch probability.
+
+Upstream-Status: Backport
+
+ http://git.uclibc.org/uClibc/commit/?id=2c8a7766681b704e710f51c0817534e3f9a952d1
+
+Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ ldso/include/dl-syscall.h | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h
+index 675b93a..e556f7b 100644
+--- a/ldso/include/dl-syscall.h
++++ b/ldso/include/dl-syscall.h
+@@ -52,7 +52,15 @@ extern int _dl_errno;
+ dynamic linking at all, so we cannot return any error codes.
+ We just punt if there is an error. */
+ #define __NR__dl_exit __NR_exit
+-static __always_inline _syscall1(void, _dl_exit, int, status)
++static __always_inline attribute_noreturn __cold void _dl_exit(int status)
++{
++ INLINE_SYSCALL(_dl_exit, 1, status);
++#if defined __GNUC__
++ __builtin_unreachable(); /* shut up warning: 'noreturn' function does return*/
++#else
++ while (1);
++#endif
++}
+
+ #define __NR__dl_close __NR_close
+ static __always_inline _syscall1(int, _dl_close, int, fd)
+--
+1.9.1
+
OpenPOWER on IntegriCloud