• Michael Ellerman's avatar
    selftests/powerpc: Fix try-run when source tree is not writable · 9686813f
    Michael Ellerman authored
    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: 0695f8bc ("selftests/powerpc: Handle Makefile for unrecognized option")
    Cc: stable@vger.kernel.org # v5.5+
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200327095319.2347641-1-mpe@ellerman.id.au
    9686813f
Makefile 1.24 KB