diff options
Diffstat (limited to 'test/asan/TestCases/Posix/asan_symbolize_script')
6 files changed, 64 insertions, 0 deletions
diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/logging_options_in_help.cc b/test/asan/TestCases/Posix/asan_symbolize_script/logging_options_in_help.cc new file mode 100644 index 000000000..b3df1cb35 --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/logging_options_in_help.cc @@ -0,0 +1,5 @@ +// RUN: %asan_symbolize --help > %t_help_output.txt +// RUN: FileCheck %s -input-file=%t_help_output.txt +// CHECK: optional arguments: +// CHECK: --log-dest +// CHECK: --log-level diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op.py b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op.py new file mode 100644 index 000000000..c636bdfa2 --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op.py @@ -0,0 +1,17 @@ +class NoOpPlugin(AsanSymbolizerPlugIn): + def register_cmdline_args(self, parser): + logging.info('Adding --unlikely-option-name-XXX option') + parser.add_argument('--unlikely-option-name-XXX', type=int, default=0) + + def process_cmdline_args(self, pargs): + logging.info('GOT --unlikely-option-name-XXX=%d', pargs.unlikely_option_name_XXX) + return True + + def destroy(self): + logging.info('destroy() called on NoOpPlugin') + + def filter_binary_path(self, path): + logging.info('filter_binary_path called in NoOpPlugin') + return path + +register_plugin(NoOpPlugin()) diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_help_output.cc b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_help_output.cc new file mode 100644 index 000000000..71f32e0d6 --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_help_output.cc @@ -0,0 +1,7 @@ +// Check help output. +// RUN: %asan_symbolize --log-level info --plugins %S/plugin_no_op.py --help 2>&1 | FileCheck %s +// CHECK: Registering plugin NoOpPlugin +// CHECK: Adding --unlikely-option-name-XXX option +// CHECK: optional arguments: +// CHECK: --unlikely-option-name-XXX + diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_symbolicate.cc b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_symbolicate.cc new file mode 100644 index 000000000..3f3ad9bfd --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/plugin_no_op_symbolicate.cc @@ -0,0 +1,24 @@ +// UNSUPPORTED: ios, android +// Check plugin command line args get parsed and that plugin functions get called as expected. + +// RUN: %clangxx_asan -O0 -g %s -o %t.executable +// RUN: not %env_asan_opts=symbolize=0 %run %t.executable > %t.log 2>&1 +// RUN: %asan_symbolize --plugins %S/plugin_no_op.py --log-level info -l %t.log --unlikely-option-name-XXX=15 2>&1 | FileCheck %s + +// CHECK: GOT --unlikely-option-name-XXX=15 +// CHECK: filter_binary_path called in NoOpPlugin +// CHECK: destroy() called on NoOpPlugin + +#include <cstdlib> +extern "C" void foo(int* a) { + *a = 5; +} + +int main() { + int* a = (int*) malloc(sizeof(int)); + if (!a) + return 0; + free(a); + foo(a); + return 0; +} diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/set_log_dest.cc b/test/asan/TestCases/Posix/asan_symbolize_script/set_log_dest.cc new file mode 100644 index 000000000..f2c309808 --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/set_log_dest.cc @@ -0,0 +1,3 @@ +// RUN: %asan_symbolize --log-level debug --log-dest %t_debug_log_output.txt --help +// RUN: FileCheck %s -input-file=%t_debug_log_output.txt -check-prefix=DEBUG-CHECK +// DEBUG-CHECK: DEBUG: [setup_logging() asan_symbolize.py:{{[0-9]+}}] Logging level set to "debug" diff --git a/test/asan/TestCases/Posix/asan_symbolize_script/set_log_level.cc b/test/asan/TestCases/Posix/asan_symbolize_script/set_log_level.cc new file mode 100644 index 000000000..b30fd6ec3 --- /dev/null +++ b/test/asan/TestCases/Posix/asan_symbolize_script/set_log_level.cc @@ -0,0 +1,8 @@ +// RUN: %asan_symbolize --log-level debug --help 2> %t_debug_log_output.txt +// RUN: FileCheck %s -input-file=%t_debug_log_output.txt -check-prefix=DEBUG-CHECK +// DEBUG-CHECK: DEBUG: [setup_logging() asan_symbolize.py:{{[0-9]+}}] Logging level set to "debug" +// +// FileCheck doesn't like empty files so add stdout too. +// RUN: %asan_symbolize --log-level info --help > %t_info_log_output.txt 2>&1 +// RUN: FileCheck %s -input-file=%t_info_log_output.txt -check-prefix=INFO-CHECK +// INFO-CHECK-NOT: DEBUG: [setup_logging() asan_symbolize.py:{{[0-9]+}}] |