[scudo] Additional modifications for Android tests support

Summary:
With the recent move of `android_commands` to `sanitizer_common`, some things
have to be updated with regard to Scudo on Android.

Notably:
- `config.android` is dealt with in the common code
- `config.compile_wrapper` can be prepended to allow for the use of the android
  commands
- `SCUDO_OPTIONS` must be passed with the environment when running a test
- `preinit.cpp` fails with some API levels, not sure why, I will have to dig
  into this later.

Note that `check-scudo` is not enabled yet in the bots. It's all local testing
for now until everything looks good.

Reviewers: alekseyshl, vitalybuka

Reviewed By: vitalybuka

Subscribers: srhines, kubamracek, llvm-commits

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

llvm-svn: 313561
This commit is contained in:
Kostya Kortchinsky 2017-09-18 20:31:57 +00:00
parent dc7d460945
commit 58c9a79bc2
4 changed files with 6 additions and 3 deletions

View File

@ -13,7 +13,7 @@ def build_env():
# Android linker ignores RPATH. Set LD_LIBRARY_PATH to Output dir.
args.append('LD_LIBRARY_PATH=%s' % (ANDROID_TMPDIR,))
for (key, value) in os.environ.items():
if key in ['ASAN_OPTIONS', 'ASAN_ACTIVATION_OPTIONS']:
if key in ['ASAN_OPTIONS', 'ASAN_ACTIVATION_OPTIONS', 'SCUDO_OPTIONS']:
args.append('%s="%s"' % (key, value))
return ' '.join(args)

View File

@ -32,7 +32,7 @@ if not config.android:
c_flags += ["-lrt"]
def build_invocation(compile_flags):
return " " + " ".join([config.clang] + compile_flags) + " "
return " " + " ".join([config.compile_wrapper, config.clang] + compile_flags) + " "
# Add clang substitutions.
config.substitutions.append(("%clang_scudo ",

View File

@ -3,7 +3,6 @@
config.name_suffix = "@SCUDO_TEST_CONFIG_SUFFIX@"
config.target_arch = "@SCUDO_TEST_TARGET_ARCH@"
config.target_cflags = "@SCUDO_TEST_TARGET_CFLAGS@"
config.android = "@ANDROID@"
# Load common config for all compiler-rt lit tests.
lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")

View File

@ -4,6 +4,10 @@
// Verifies that calling malloc in a preinit_array function succeeds, and that
// the resulting pointer can be freed at program termination.
// On some Android versions, calling mmap() from a preinit function segfaults.
// It looks like __mmap2.S ends up calling a NULL function pointer.
// UNSUPPORTED: android
#include <assert.h>
#include <stdlib.h>
#include <string.h>