]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/init-order-atexit.cc
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / TestCases / init-order-atexit.cc
1 // Test for the following situation:
2 // (1) global A is constructed.
3 // (2) exit() is called during construction of global B.
4 // (3) destructor of A reads uninitialized global C from another module.
5 // We do *not* want to report init-order bug in this case.
6
7 // RUN: %clangxx_asan -O0 %s %p/Helpers/init-order-atexit-extra.cc -o %t
8 // RUN: %env_asan_opts=strict_init_order=true not %run %t 2>&1 | FileCheck %s
9
10 #include <stdio.h>
11 #include <stdlib.h>
12
13 void AccessC();
14
15 class A {
16 public:
17 A() { }
18 ~A() { AccessC(); printf("PASSED\n"); }
19 // CHECK-NOT: AddressSanitizer
20 // CHECK: PASSED
21 };
22
23 A a;
24
25 class B {
26 public:
27 B() { exit(1); }
28 ~B() { }
29 };
30
31 B b;