1 // RUN: %clangxx -O3 %s -o %t 2 // RUN: %env_tool_opts=strip_path_prefix=/TestCases/ %run %t 2>&1 | FileCheck %s 3 // RUN: %env_tool_opts=strip_path_prefix=/TestCases/:symbolize_inline_frames=0 \ 4 // RUN: %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK-NOINLINE 5 6 // XFAIL: darwin 7 8 #include <sanitizer/common_interface_defs.h> 9 #include <stdio.h> 10 #include <string.h> 11 12 char buffer[10000]; 13 Symbolize()14__attribute__((noinline)) static void Symbolize() { 15 __sanitizer_symbolize_pc(__builtin_return_address(0), "%p %F %L", buffer, 16 sizeof(buffer)); 17 for (char *p = buffer; strlen(p); p += strlen(p) + 1) 18 printf("%s\n", p); 19 } 20 21 // CHECK-NOINLINE: {{0x[0-9a-f]+}} in main symbolize_pc_inline.cpp:[[@LINE+2]] 22 // CHECK: [[ADDR:0x[0-9a-f]+]] in C2 symbolize_pc_inline.cpp:[[@LINE+1]] C2()23static inline void C2() { Symbolize(); } 24 25 // CHECK: [[ADDR]] in C3 symbolize_pc_inline.cpp:[[@LINE+1]] C3()26static inline void C3() { C2(); } 27 28 // CHECK: [[ADDR]] in C4 symbolize_pc_inline.cpp:[[@LINE+1]] C4()29static inline void C4() { C3(); } 30 31 // CHECK: [[ADDR]] in main symbolize_pc_inline.cpp:[[@LINE+1]] main()32int main() { C4(); } 33