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