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