Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 1 | From 694eba7bb974f6b8bd308804cb24350150108b2b Mon Sep 17 00:00:00 2001 |
| 2 | From: He Zhe <zhe.he@windriver.com> |
| 3 | Date: Wed, 21 Nov 2018 15:12:43 +0800 |
| 4 | Subject: [PATCH] scripts: Use fixed input and output files instead of pipe for here-doc |
| 5 | |
| 6 | There was a bug of "as" in binutils that when it checks if the input file and |
| 7 | output file are the same one, it would not check if they are on the same block |
| 8 | device. The check is introduced by the following commit in v2.31. |
| 9 | |
| 10 | https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= |
| 11 | 67f846b59b32f3d704c601669409c2584383fea9 |
| 12 | |
| 13 | The here-doc usage in this script creates temporary file in /tmp. When we run in |
| 14 | an environment where /tmp has rarely been used, the newly created temporary file |
| 15 | may have a very low inode number. If the inode number was 6 which is the same as |
| 16 | /dev/null, the as would wrongly think the input file and the output file are the |
| 17 | same and report the following error. |
| 18 | |
| 19 | *** Compiler lacks asm-goto support.. Stop. |
| 20 | |
| 21 | One observed case happened in docker where the /tmp could be so rarely used that |
| 22 | very low number inode may be allocated and triggers the error. |
| 23 | |
| 24 | The fix below for the bug only exists on the master branch of binutils so far |
| 25 | and has not been released from upstream. As the convict is introduced since |
| 26 | v2.31, only v2.31 is affected. |
| 27 | |
| 28 | https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= |
| 29 | 2a50366ded329bfb39d387253450c9d5302c3503 |
| 30 | |
| 31 | When building linux-libc-headers we need to use "as" in binutils which does not |
| 32 | contain the fix for the moment. To work around the error, we create a fixed |
| 33 | temporary file to contain the program being tested. |
| 34 | |
| 35 | This patch also removes ">/dev/null 2>&1" so we will have more direct error |
| 36 | information in case something else wrong happened. |
| 37 | |
| 38 | Upstream-Status: Inappropriate [A work around for binutils v2.31] |
| 39 | |
| 40 | Signed-off-by: He Zhe <zhe.he@windriver.com> |
| 41 | --- |
| 42 | scripts/gcc-goto.sh | 5 ++++- |
| 43 | 1 file changed, 4 insertions(+), 1 deletion(-) |
| 44 | |
| 45 | diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh |
| 46 | index 8b980fb22..d256a9438 100755 |
| 47 | --- a/scripts/gcc-goto.sh |
| 48 | +++ b/scripts/gcc-goto.sh |
| 49 | @@ -3,7 +3,7 @@ |
| 50 | # Test for gcc 'asm goto' support |
| 51 | # Copyright (C) 2010, Jason Baron <jbaron@redhat.com> |
| 52 | |
| 53 | -cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null |
| 54 | +cat << "END" > ./input |
| 55 | int main(void) |
| 56 | { |
| 57 | #if defined(__arm__) || defined(__aarch64__) |
| 58 | @@ -20,3 +20,6 @@ entry: |
| 59 | return 0; |
| 60 | } |
| 61 | END |
| 62 | + |
| 63 | +$@ -x c ./input -fno-PIE -c -o ./output |
| 64 | +rm ./input ./output |
| 65 | -- |
| 66 | 2.19.1 |
| 67 | |