xref: /llvm-project/compiler-rt/test/asan/TestCases/debug_mapping.cpp (revision 870eee464b336cc42e3e1883e5402675be180eec)
1673dc3d4SNico Weber // Checks that the debugging API returns correct shadow scale and offset.
2673dc3d4SNico Weber // RUN: %clangxx_asan -O %s -o %t
3673dc3d4SNico Weber // RUN: %env_asan_opts=verbosity=1 %run %t 2>&1 | FileCheck %s
4673dc3d4SNico Weber 
5673dc3d4SNico Weber #include <sanitizer/asan_interface.h>
6673dc3d4SNico Weber #include <stdio.h>
7673dc3d4SNico Weber #include <stdlib.h>
8673dc3d4SNico Weber 
9673dc3d4SNico Weber #if _WIN64
10673dc3d4SNico Weber #define PTR "%llx"
11673dc3d4SNico Weber #else
12673dc3d4SNico Weber #define PTR "%lx"
13673dc3d4SNico Weber #endif
14673dc3d4SNico Weber 
15673dc3d4SNico Weber // printed because of verbosity=1
16673dc3d4SNico Weber // CHECK: SHADOW_SCALE: [[SCALE:[0-9]+]]
17*870eee46SVitaly Buka // CHECK: SHADOW_OFFSET: 0x{{0*}}[[OFFSET:[0-9a-f]+]]
18673dc3d4SNico Weber 
19673dc3d4SNico Weber int main() {
20673dc3d4SNico Weber   size_t scale, offset;
21673dc3d4SNico Weber   __asan_get_shadow_mapping(&scale, &offset);
22673dc3d4SNico Weber 
23673dc3d4SNico Weber   fprintf(stderr, "scale: %d\n", (int)scale);
24673dc3d4SNico Weber   fprintf(stderr, "offset: 0x" PTR "\n", (void*)offset);
25673dc3d4SNico Weber 
26673dc3d4SNico Weber   // CHECK: scale: [[SCALE]]
27*870eee46SVitaly Buka   // CHECK: offset: 0x{{0*}}[[OFFSET]]
28673dc3d4SNico Weber 
29673dc3d4SNico Weber   return 0;
30673dc3d4SNico Weber }
31