16d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// Checks that the debugging API returns correct shadow scale and offset. 26d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: %clangxx_asan -O %s -o %t 36d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: env ASAN_OPTIONS=verbosity=1 %run %t 2>&1 | FileCheck %s 46d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 56d1862363c88c183b0ed7740fca876342cf0474bStephen Hines#include <sanitizer/asan_interface.h> 66d1862363c88c183b0ed7740fca876342cf0474bStephen Hines#include <stdio.h> 76d1862363c88c183b0ed7740fca876342cf0474bStephen Hines#include <stdlib.h> 86d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 96d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// printed because of verbosity=1 106d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// CHECK: SHADOW_SCALE: [[SCALE:[0-9]+]] 116d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// CHECK: SHADOW_OFFSET: [[OFFSET:[0-9]+]] 126d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 136d1862363c88c183b0ed7740fca876342cf0474bStephen Hinesint main() { 146d1862363c88c183b0ed7740fca876342cf0474bStephen Hines size_t scale, offset; 156d1862363c88c183b0ed7740fca876342cf0474bStephen Hines __asan_get_shadow_mapping(&scale, &offset); 166d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 176d1862363c88c183b0ed7740fca876342cf0474bStephen Hines fprintf(stderr, "scale: %lx\n", scale); 186d1862363c88c183b0ed7740fca876342cf0474bStephen Hines fprintf(stderr, "offset: %lx\n", offset); 196d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 206d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // CHECK: scale: [[SCALE]] 216d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // CHECK: offset: [[OFFSET]] 226d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 236d1862363c88c183b0ed7740fca876342cf0474bStephen Hines return 0; 246d1862363c88c183b0ed7740fca876342cf0474bStephen Hines} 25