diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ubsan/TestCases/Misc/Inputs/no-interception-dso.c | 3 | ||||
-rw-r--r-- | test/ubsan/TestCases/Misc/no-interception.cpp | 20 | ||||
-rw-r--r-- | test/ubsan/lit.common.cfg | 2 |
3 files changed, 25 insertions, 0 deletions
diff --git a/test/ubsan/TestCases/Misc/Inputs/no-interception-dso.c b/test/ubsan/TestCases/Misc/Inputs/no-interception-dso.c new file mode 100644 index 000000000..5ccc9b63d --- /dev/null +++ b/test/ubsan/TestCases/Misc/Inputs/no-interception-dso.c @@ -0,0 +1,3 @@ +int dso_function(int i) { + return i + 1; +} diff --git a/test/ubsan/TestCases/Misc/no-interception.cpp b/test/ubsan/TestCases/Misc/no-interception.cpp new file mode 100644 index 000000000..c82fed3bf --- /dev/null +++ b/test/ubsan/TestCases/Misc/no-interception.cpp @@ -0,0 +1,20 @@ +// REQUIRES: android + +// Tests that ubsan can detect errors on Android if libc appears before the +// runtime in the library search order, which means that we cannot intercept +// symbols. + +// RUN: %clangxx %p/Inputs/no-interception-dso.c -fsanitize=undefined -fPIC -shared -o %dynamiclib %ld_flags_rpath_so + +// Make sure that libc is first in DT_NEEDED. +// RUN: %clangxx %s -lc -o %t %ld_flags_rpath_exe +// RUN: %run %t 2>&1 | FileCheck %s + +#include <limits.h> + +int dso_function(int); + +int main(int argc, char **argv) { + // CHECK: signed integer overflow + dso_function(INT_MAX); +} diff --git a/test/ubsan/lit.common.cfg b/test/ubsan/lit.common.cfg index f34d5867d..e1bd349af 100644 --- a/test/ubsan/lit.common.cfg +++ b/test/ubsan/lit.common.cfg @@ -74,3 +74,5 @@ if config.host_os not in ['Linux', 'Darwin', 'FreeBSD', 'Windows', 'NetBSD']: config.unsupported = True config.available_features.add('arch=' + config.target_arch) + +config.excludes = ['Inputs'] |