mirror of
https://git.yoctoproject.org/poky
synced 2026-02-27 20:09:41 +01:00
This is an amendment for 2322dc4 "linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe" which moves just the temporary input file from /tmp to build directory. But the build directory may not in the same file system with the output file, /dev/null, either and thus make it possible to trigger that bug, 67f846b, in binutil v2.31. This patch puts both the input and output files into build directory for good. (From OE-Core rev: 0d836013e43f29cb7d4a1f8bb9ef04dd8d9132df) Signed-off-by: He Zhe <zhe.he@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
69 lines
2.4 KiB
Diff
69 lines
2.4 KiB
Diff
From 694eba7bb974f6b8bd308804cb24350150108b2b 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 input and output files 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.
|
|
|
|
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
|
|
67f846b59b32f3d704c601669409c2584383fea9
|
|
|
|
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.
|
|
|
|
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
|
|
2a50366ded329bfb39d387253450c9d5302c3503
|
|
|
|
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 | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh
|
|
index 083c526..8dfac55 100755
|
|
--- a/scripts/gcc-goto.sh
|
|
+++ b/scripts/gcc-goto.sh
|
|
@@ -3,7 +3,7 @@
|
|
# 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"
|
|
+cat << "END" > ./input
|
|
int main(void)
|
|
{
|
|
#if defined(__arm__) || defined(__aarch64__)
|
|
@@ -20,3 +20,6 @@ entry:
|
|
return 0;
|
|
}
|
|
END
|
|
+
|
|
+$@ -x c ./input -c -o ./output && echo "y"
|
|
+rm ./input ./output
|
|
--
|
|
2.7.4
|
|
|