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