Skip to content

Commit

Permalink
[scudo] Use -fsanitize=scudo rather than --whole-archive in tests
Browse files Browse the repository at this point in the history
Summary:
Tests were being run by whole-linking the static library with our test binaries.
But since `-fsanitize=scudo` landed with rL317337, we might as well change how
the tests are compiled to use it.

The only difference will be on Android, where the clang flag links in the
dynamic library instead, but the bots are already pushing
`libclang_rt.*-android.so` to the device there is no additional change needed.

Tested locally, including with a standalone build, and an Android one on a O
device, and it all passes.

Reviewers: alekseyshl

Reviewed By: alekseyshl

Subscribers: #sanitizers, llvm-commits

Differential Revision: https://reviews.llvm.org/D42243

llvm-svn: 322882
  • Loading branch information
Kostya Kortchinsky committed Jan 18, 2018
1 parent 6dce59b commit ab0d887
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions compiler-rt/test/scudo/lit.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,8 @@ config.name = 'Scudo' + config.name_suffix
# Setup source root.
config.test_source_root = os.path.dirname(__file__)

# Path to the shared & static libraries
# Path to the shared library
shared_libscudo = os.path.join(config.compiler_rt_libdir, "libclang_rt.scudo-%s.so" % config.target_arch)
static_libscudo = os.path.join(config.compiler_rt_libdir, "libclang_rt.scudo-%s.a" % config.target_arch)
static_libscudo_cxx = os.path.join(config.compiler_rt_libdir, "libclang_rt.scudo_cxx-%s.a" % config.target_arch)

whole_archive = "-Wl,-whole-archive %s -Wl,-no-whole-archive " % static_libscudo
whole_archive_cxx = "-Wl,-whole-archive %s -Wl,-no-whole-archive " % static_libscudo_cxx

# Test suffixes.
config.suffixes = ['.c', '.cc', '.cpp']
Expand All @@ -35,13 +30,15 @@ if not config.android:

cxx_flags = (c_flags + config.cxx_mode_flags + ["-std=c++11"])

scudo_flags = ["-fsanitize=scudo"]

def build_invocation(compile_flags):
return " " + " ".join([config.clang] + compile_flags) + " "

# Add clang substitutions.
config.substitutions.append(("%clang ", build_invocation(c_flags)))
config.substitutions.append(("%clang_scudo ", build_invocation(c_flags) + whole_archive))
config.substitutions.append(("%clangxx_scudo ", build_invocation(cxx_flags) + whole_archive + whole_archive_cxx))
config.substitutions.append(("%clang_scudo ", build_invocation(c_flags + scudo_flags)))
config.substitutions.append(("%clangxx_scudo ", build_invocation(cxx_flags + scudo_flags)))
config.substitutions.append(("%shared_libscudo", shared_libscudo))

# Platform-specific default SCUDO_OPTIONS for lit tests.
Expand Down

0 comments on commit ab0d887

Please sign in to comment.