[PATCH] D86694: [scudo] Allow -fsanitize=scudo on Linux and Windows (WIP, don't land as is)

Russell Gallop via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 28 12:38:23 PDT 2020


russell.gallop updated this revision to Diff 301331.
russell.gallop added a comment.
Herald added a subscriber: dexonsmith.

Apologies for the delay, I've had a few other things on.

I've worked through the tests. Several I've marked as unsupported on windows as they use things unixy things like nm, LD_PRELOAD or fork(). I added a C++ threads version of threads.c to test that on Windows (cxx_threads.cpp).

There are 5 remaining failures:

  Failed Tests (5):
    Scudo-x86_64 :: aligned-new.cpp
    Scudo-x86_64 :: mismatch.cpp
    Scudo-x86_64 :: options.cpp
    Scudo-x86_64 :: sized-delete.cpp
    Scudo-x86_64 :: sizes.cpp
  
  Testing Time: 11.61s
    Unsupported:  8
    Passed     : 13
    Failed     :  5

These are all down to new/delete not being replaced by the scudo versions, so scudoAllocate and scudoDeallocate don't get the appropriate size and Type parameters. The cxx library should be linked by SanitizerArgs::addArgs so I'm not sure why this is. @cryptoad, it looks like you did some work in scudo_new_delete.cpp, did you have this working?

Does new/delete need to work for this, or should I mark these tests as unsupported on Windows for the purposes of a step towards getting the standalone scudo working?

Stage 2 builds with -DLLVM_INTEGRATED_CRT_ALLOC=<llvm-project>/stage1/lib/clang/12.0.0/lib/windows/clang_rt.scudo-x86_64.lib -DLLVM_USE_CRT_RELEASE=MT.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86694/new/

https://reviews.llvm.org/D86694

Files:
  clang/lib/Driver/SanitizerArgs.cpp
  clang/lib/Driver/ToolChains/MSVC.cpp
  compiler-rt/cmake/config-ix.cmake
  compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
  compiler-rt/lib/scudo/CMakeLists.txt
  compiler-rt/lib/scudo/scudo_allocator.cpp
  compiler-rt/lib/scudo/scudo_crc32.cpp
  compiler-rt/lib/scudo/scudo_new_delete.cpp
  compiler-rt/lib/scudo/scudo_platform.h
  compiler-rt/lib/scudo/scudo_tsd.h
  compiler-rt/lib/scudo/scudo_tsd_shared.cpp
  compiler-rt/lib/scudo/scudo_tsd_shared.inc
  compiler-rt/test/scudo/cxx_threads.cpp
  compiler-rt/test/scudo/dealloc-race.c
  compiler-rt/test/scudo/fsanitize.c
  compiler-rt/test/scudo/interface.cpp
  compiler-rt/test/scudo/lit.cfg.py
  compiler-rt/test/scudo/malloc.cpp
  compiler-rt/test/scudo/memalign.c
  compiler-rt/test/scudo/mismatch.cpp
  compiler-rt/test/scudo/overflow.c
  compiler-rt/test/scudo/preload.cpp
  compiler-rt/test/scudo/rss.c
  compiler-rt/test/scudo/secondary.c
  compiler-rt/test/scudo/symbols.test
  compiler-rt/test/scudo/threads.c
  compiler-rt/test/scudo/tsd_destruction.c
  compiler-rt/test/scudo/valloc.c
  llvm/CMakeLists.txt
  llvm/cmake/modules/HandleLLVMOptions.cmake
  llvm/lib/Support/CMakeLists.txt

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D86694.301331.patch
Type: text/x-patch
Size: 28215 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20201028/2d87021f/attachment-0001.bin>


More information about the cfe-commits mailing list