1*673dc3d4SNico Weber // Checks that the debugging API returns correct shadow scale and offset. 2*673dc3d4SNico Weber // RUN: %clangxx_asan -O %s -o %t 3*673dc3d4SNico Weber // RUN: %env_asan_opts=verbosity=1 %run %t 2>&1 | FileCheck %s 4*673dc3d4SNico Weber 5*673dc3d4SNico Weber #include <sanitizer/asan_interface.h> 6*673dc3d4SNico Weber #include <stdio.h> 7*673dc3d4SNico Weber #include <stdlib.h> 8*673dc3d4SNico Weber 9*673dc3d4SNico Weber #if _WIN64 10*673dc3d4SNico Weber #define PTR "%llx" 11*673dc3d4SNico Weber #else 12*673dc3d4SNico Weber #define PTR "%lx" 13*673dc3d4SNico Weber #endif 14*673dc3d4SNico Weber 15*673dc3d4SNico Weber // printed because of verbosity=1 16*673dc3d4SNico Weber // CHECK: SHADOW_SCALE: [[SCALE:[0-9]+]] 17*673dc3d4SNico Weber // CHECK: SHADOW_OFFSET: [[OFFSET:0x[0-9a-f]+]] 18*673dc3d4SNico Weber main()19*673dc3d4SNico Weberint main() { 20*673dc3d4SNico Weber size_t scale, offset; 21*673dc3d4SNico Weber __asan_get_shadow_mapping(&scale, &offset); 22*673dc3d4SNico Weber 23*673dc3d4SNico Weber fprintf(stderr, "scale: %d\n", (int)scale); 24*673dc3d4SNico Weber fprintf(stderr, "offset: 0x" PTR "\n", (void*)offset); 25*673dc3d4SNico Weber 26*673dc3d4SNico Weber // CHECK: scale: [[SCALE]] 27*673dc3d4SNico Weber // CHECK: offset: [[OFFSET]] 28*673dc3d4SNico Weber 29*673dc3d4SNico Weber return 0; 30*673dc3d4SNico Weber } 31