1*87aa9c9eSJonas Devlieghere // clang-format off 2*87aa9c9eSJonas Devlieghere 3*87aa9c9eSJonas Devlieghere // REQUIRES: system-windows 4*87aa9c9eSJonas Devlieghere // RUN: %build --compiler=clang-cl -o %t.exe -- %s 5*87aa9c9eSJonas Devlieghere // RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -o "run" -- write | FileCheck --check-prefix=WRITE %s 6*87aa9c9eSJonas Devlieghere // RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -o "run" -- read | FileCheck --check-prefix=READ %s 7*87aa9c9eSJonas Devlieghere 8*87aa9c9eSJonas Devlieghere #include <string.h> 9*87aa9c9eSJonas Devlieghere access_violation_write(void * addr)10*87aa9c9eSJonas Devlieghereint access_violation_write(void* addr) { 11*87aa9c9eSJonas Devlieghere *(int*)addr = 42; 12*87aa9c9eSJonas Devlieghere return 0; 13*87aa9c9eSJonas Devlieghere } 14*87aa9c9eSJonas Devlieghere 15*87aa9c9eSJonas Devlieghere access_violation_read(void * addr)16*87aa9c9eSJonas Devlieghereint access_violation_read(void* addr) { 17*87aa9c9eSJonas Devlieghere volatile int ret = *(int*)addr; 18*87aa9c9eSJonas Devlieghere return ret; 19*87aa9c9eSJonas Devlieghere } 20*87aa9c9eSJonas Devlieghere main(int argc,char * argv[])21*87aa9c9eSJonas Devlieghereint main(int argc, char *argv[]) { 22*87aa9c9eSJonas Devlieghere if (argc < 2) { 23*87aa9c9eSJonas Devlieghere return 1; 24*87aa9c9eSJonas Devlieghere } 25*87aa9c9eSJonas Devlieghere if (strcmp(argv[1], "write") == 0) { 26*87aa9c9eSJonas Devlieghere return access_violation_write((void*)42); 27*87aa9c9eSJonas Devlieghere } 28*87aa9c9eSJonas Devlieghere if (strcmp(argv[1], "read") == 0) { 29*87aa9c9eSJonas Devlieghere return access_violation_read((void*)42); 30*87aa9c9eSJonas Devlieghere } 31*87aa9c9eSJonas Devlieghere return 1; 32*87aa9c9eSJonas Devlieghere } 33*87aa9c9eSJonas Devlieghere 34*87aa9c9eSJonas Devlieghere 35*87aa9c9eSJonas Devlieghere // WRITE: * thread #1, stop reason = Exception 0xc0000005 encountered at address {{.*}}: Access violation writing location 0x0000002a 36*87aa9c9eSJonas Devlieghere 37*87aa9c9eSJonas Devlieghere // READ: * thread #1, stop reason = Exception 0xc0000005 encountered at address {{.*}}: Access violation reading location 0x0000002a 38