16d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 26d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: %clangxx_asan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s 36d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: %clangxx_asan -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s 46d1862363c88c183b0ed7740fca876342cf0474bStephen Hines// RUN: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s 541f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonov 641f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonov__attribute__((noinline)) 73d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// FIXME: Static symbols don't show up in PDBs. We can remove this once we start 83d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// using DWARF. 93d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#ifndef _MSC_VER 103d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainarstatic 113d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#endif 123d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainarvoid NullDeref(int *ptr) { 133d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar // CHECK: ERROR: AddressSanitizer: {{SEGV|access-violation}} on unknown address 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // CHECK: {{0x0*000.. .*pc 0x.*}} 1555425eb7ad3f18a1f740e0e445bc79a012429766Alexey Samsonov ptr[10]++; // BOOM 166d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // atos on Mac cannot extract the symbol name correctly. Also, on FreeBSD 9.2 176d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // the demangling function rejects local names with 'L' in front of them. 186d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // CHECK: {{ #0 0x.* in .*NullDeref.*null_deref.cc:}}[[@LINE-3]] 1941f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonov} 2041f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonovint main() { 2141f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonov NullDeref((int*)0); 22ed936c1d3a8db321b45d2e249159ec48c6450043Alexey Samsonov // CHECK: {{ #1 0x.* in main.*null_deref.cc:}}[[@LINE-1]] 236d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // CHECK: AddressSanitizer can not provide additional info. 2441f85b9e6a88f801955d99c8a8233b97e64c51ffAlexey Samsonov} 25