1// RUN: %clangxx_asan -fno-sanitize-address-use-odr-indicator -fPIC %s -o %t
2// RUN: %env_asan_opts=report_globals=2 %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,INDICATOR0
3
4// RUN: %clangxx_asan -fsanitize-address-use-odr-indicator -fPIC %s -o %t
5// RUN: %env_asan_opts=report_globals=2 %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,INDICATOR1
6
7#include <stdio.h>
8
9int test_global_1;
10// INDICATOR0-DAG: Added Global{{.*}} name=test_global_1{{.*}} odr_indicator={{0x0+$}}
11// INDICATOR1-DAG: Added Global{{.*}} name=test_global_1{{.*}} odr_indicator={{0x0*[^0]+.*$}}
12
13static int test_global_2;
14// CHECK-DAG: Added Global{{.*}} name=test_global_2{{.*}} source={{.*}} module={{.*}}.cpp.tmp {{.*}} odr_indicator={{0xf+$}}
15
16namespace {
17static int test_global_3;
18// CHECK-DAG: Added Global{{.*}} name={{.*}}::test_global_3{{.*}} source={{.*}} module={{.*}}.cpp.tmp {{.*}} odr_indicator={{0xf+$}}
19} // namespace
20
21int main() {
22 const char f[] = "%d %d %d\n";
23 // CHECK-DAG: Added Global{{.*}} name=__const.main.f{{.*}} source={{.*}} module={{.*}}.cpp.tmp {{.*}} odr_indicator={{0xf+$}}
24 printf(format: f, test_global_1, test_global_2, test_global_3);
25 return 0;
26}
27

source code of compiler-rt/test/asan/TestCases/Linux/odr_indicators.cpp