path: root/meta/recipes-kernel
diff options
authorHe Zhe <zhe.he@windriver.com>2018-11-21 22:06:05 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-12-13 16:32:14 +0000
commit2322dc4f414da0281fdaffa7bc2205fb82a63d12 (patch)
tree2f85c1e27cbf483369923af7eb204c9808ff17d3 /meta/recipes-kernel
parent9584fc5ff7e07bb38c6ab115a216d9d28d1632d9 (diff)
linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe
This is a workaround for the following possible build failure. *** Compiler lacks asm-goto support.. Stop. When building linux-libc-headers we need to use binutils on build machine. binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to fail when running in an environment where /tmp is rarely used, e.g. in docker. Signed-off-by: He Zhe <zhe.he@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-kernel')
2 files changed, 74 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
new file mode 100644
index 0000000000..0d8fa80939
--- /dev/null
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
@@ -0,0 +1,70 @@
+From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
+From: He Zhe <zhe.he@windriver.com>
+Date: Wed, 21 Nov 2018 15:12:43 +0800
+Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
+ here-doc
+There was a bug of "as" in binutils that when it checks if the input file and
+output file are the same one, it would not check if they are on the same block
+device. The check is introduced by the following commit in v2.31.
+The here-doc usage in this script creates temporary file in /tmp. When we run in
+an environment where /tmp has rarely been used, the newly created temporary file
+may have a very low inode number. If the inode number was 6 which is the same as
+/dev/null, the as would wrongly think the input file and the output file are the
+same and report the following error.
+*** Compiler lacks asm-goto support.. Stop.
+One observed case happened in docker where the /tmp could be so rarely used that
+very low number inode may be allocated and triggers the error.
+The fix below for the bug only exists on the master branch of binutils so far
+and has not been released from upstream. As the convict is introduced since
+v2.31, only v2.31 is affected.
+When building linux-libc-headers we need to use "as" in binutils which does not
+contain the fix for the moment. To work around the error, we create a fixed
+temporary file to contain the program being tested.
+This patch also removes ">/dev/null 2>&1" so we will have more direct error
+information in case something else wrong happened.
+Upstream-Status: Inappropriate [A work around for binutils v2.31]
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+ scripts/gcc-goto.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh
+index 083c526..0aaf1b4 100755
+--- a/scripts/gcc-goto.sh
++++ b/scripts/gcc-goto.sh
+@@ -3,7 +3,9 @@
+ # Test for gcc 'asm goto' support
+ # Copyright (C) 2010, Jason Baron <jbaron@redhat.com>
+-cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y"
++TMPFILE=`mktemp -p .`
++cat << "END" > ${TMPFILE}
+ int main(void)
+ {
+ #if defined(__arm__) || defined(__aarch64__)
+@@ -20,3 +22,6 @@ entry:
+ return 0;
+ }
++$@ -x c ${TMPFILE} -c -o /dev/null && echo "y"
++rm ${TMPFILE}
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
index eb7bee72b0..00420aa6f7 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
@@ -9,5 +9,9 @@ SRC_URI_append_libc-musl = "\
file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \
+SRC_URI_append = "\
+ file://0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch \
SRC_URI[md5sum] = "bee5fe53ee1c3142b8f0c12c0d3348f9"
SRC_URI[sha256sum] = "19d8bcf49ef530cd4e364a45b4a22fa70714b70349c8100e7308488e26f1eaf1"