1 | // If the binary looks up libraries using an rpath, we can't test this |
2 | // without copying the whole lib dir or polluting the build dir. |
3 | // REQUIRES: static-libs |
4 | |
5 | // The above also applies if the binary is built with libc++. |
6 | // UNSUPPORTED: libcxx-used |
7 | |
8 | // RUN: rm -rf %t.bin |
9 | // RUN: mkdir %t.bin |
10 | // RUN: cp $(which llvm-symbolizer) %t.bin |
11 | // RUN: rm -rf %t.dir |
12 | // RUN: mkdir %t.dir |
13 | // RUN: %clangxx -O0 %s -o %t && cd %t.dir |
14 | // RUN: %env_tool_opts=external_symbolizer_path=%d/external_symbolizer_path.cpp.tmp.bin/llvm-symbolizer \ |
15 | // RUN: %run %t 2>&1 | FileCheck %s --check-prefix=FOUND |
16 | // RUN: rm -rf %t.bin/llvm-symbolizer |
17 | // RUN: cd .. |
18 | // RUN: %clangxx -O0 %s -o %t && cd %t.dir |
19 | // RUN: %env_tool_opts=external_symbolizer_path=%d/external_symbolizer_path.cpp.tmp.bin/llvm-symbolizer \ |
20 | // RUN: %run %t 2>&1 | FileCheck %s --check-prefix=NOT-FOUND |
21 | |
22 | // REQUIRES: shell |
23 | |
24 | // Mobile device will not have symbolizer in provided path. |
25 | // UNSUPPORTED: ios, android |
26 | |
27 | // FIXME: Figure out why this fails on certain buildbots and re-enable. |
28 | // UNSUPPORTED: target={{.*linux.*}} |
29 | |
30 | #include <sanitizer/common_interface_defs.h> |
31 | #include <stdio.h> |
32 | |
33 | static void Symbolize() { |
34 | char buffer[100]; |
35 | __sanitizer_symbolize_pc(pc: __builtin_return_address(0), fmt: "%p %F %L" , out_buf: buffer, |
36 | out_buf_size: sizeof(buffer)); |
37 | printf(format: "%s\n" , buffer); |
38 | } |
39 | |
40 | int main() { |
41 | // FOUND: {{0x.* in main}} |
42 | // NOT-FOUND: WARNING: invalid path to external symbolizer! |
43 | Symbolize(); |
44 | } |
45 | |