• Ryan Roberts's avatar
    selftests: link libasan statically for tests with -fsanitize=address · c652df8a
    Ryan Roberts authored
    When dynamically linking, Address Sanitizer requires its library to be the
    first one to be loaded; this is apparently to ensure that every call to
    malloc is intercepted.  If using LD_PRELOAD, those listed libraries will
    be loaded before the libraries listed in the program's ELF and will
    therefore violate this requirement, leading to the below failure and
    output from ASan.
    
    commit 58e2847a ("selftests: line buffer test program's stdout")
    modified the kselftest runner to force line buffering by forcing the test
    programs to run through `stdbuf`.  It turns out that stdbuf implements
    line buffering by injecting a library via LD_PRELOAD.  Therefore selftests
    that use ASan started failing.
    
    Fix this by statically linking libasan in the affected test programs,
    using the `-static-libasan` option.  Note this is already the default for
    Clang, but not got GCC.
    
    Test output sample for failing case:
    
      TAP version 13
      1..3
      # timeout set to 300
      # selftests: openat2: openat2_test
      # ==4052==ASan runtime does not come first in initial library list;
      you should either link runtime to your application or manually preload
      it with LD_PRELOAD.
      not ok 1 selftests: openat2: openat2_test # exit=1
      # timeout set to 300
      # selftests: openat2: resolve_test
      # ==4070==ASan runtime does not come first in initial library list;
      you should either link runtime to your application or manually preload
      it with LD_PRELOAD.
      not ok 2 selftests: openat2: resolve_test # exit=1
    
    Link: https://lkml.kernel.org/r/20230912135048.1755771-1-ryan.roberts@arm.comSigned-off-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Fixes: 58e2847a ("selftests: line buffer test program's stdout")
    Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202309121342.97e2f008-oliver.sang@intel.com
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Florent Revest <revest@chromium.org>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Tom Rix <trix@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    c652df8a
Makefile 193 Bytes