| From 9686813f6e9d5568bc045de0be853411e44958c8 Mon Sep 17 00:00:00 2001 |
| From: Michael Ellerman <mpe@ellerman.id.au> |
| Date: Fri, 27 Mar 2020 20:53:19 +1100 |
| Subject: selftests/powerpc: Fix try-run when source tree is not writable |
| |
| From: Michael Ellerman <mpe@ellerman.id.au> |
| |
| commit 9686813f6e9d5568bc045de0be853411e44958c8 upstream. |
| |
| We added a usage of try-run to pmu/ebb/Makefile to detect if the |
| toolchain supported the -no-pie option. |
| |
| This fails if we build out-of-tree and the source tree is not |
| writable, as try-run tries to write its temporary files to the current |
| directory. That leads to the -no-pie option being silently dropped, |
| which leads to broken executables with some toolchains. |
| |
| If we remove the redirect to /dev/null in try-run, we see the error: |
| |
| make[3]: Entering directory '/linux/tools/testing/selftests/powerpc/pmu/ebb' |
| /usr/bin/ld: cannot open output file .54.tmp: Read-only file system |
| collect2: error: ld returned 1 exit status |
| make[3]: Nothing to be done for 'all'. |
| |
| And looking with strace we see it's trying to use a file that's in the |
| source tree: |
| |
| lstat("/linux/tools/testing/selftests/powerpc/pmu/ebb/.54.tmp", 0x7ffffc0f83c8) |
| |
| We can fix it by setting TMPOUT to point to the $(OUTPUT) directory, |
| and we can verify with strace it's now trying to write to the output |
| directory: |
| |
| lstat("/output/kselftest/powerpc/pmu/ebb/.54.tmp", 0x7fffd1bf6bf8) |
| |
| And also see that the -no-pie option is now correctly detected. |
| |
| Fixes: 0695f8bca93e ("selftests/powerpc: Handle Makefile for unrecognized option") |
| Cc: stable@vger.kernel.org # v5.5+ |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/20200327095319.2347641-1-mpe@ellerman.id.au |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| tools/testing/selftests/powerpc/pmu/ebb/Makefile | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/tools/testing/selftests/powerpc/pmu/ebb/Makefile |
| +++ b/tools/testing/selftests/powerpc/pmu/ebb/Makefile |
| @@ -7,6 +7,7 @@ noarg: |
| # The EBB handler is 64-bit code and everything links against it |
| CFLAGS += -m64 |
| |
| +TMPOUT = $(OUTPUT)/ |
| # Toolchains may build PIE by default which breaks the assembly |
| no-pie-option := $(call try-run, echo 'int main() { return 0; }' | \ |
| $(CC) -Werror $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS) -no-pie -x c - -o "$$TMP", -no-pie) |