blob: 021b2bd39a4c8923e0799627fc337eed70bbfde2 [file] [log] [blame]
Stephen Hines2d1fdb22014-05-28 23:58:16 -07001// 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
Pirama Arumuga Nainar799172d2016-03-03 15:50:30 -08008// RUN: %env_asan_opts=strict_init_order=true not %run %t 2>&1 | FileCheck %s
Stephen Hines2d1fdb22014-05-28 23:58:16 -07009
10#include <stdio.h>
11#include <stdlib.h>
12
13void AccessC();
14
15class A {
16 public:
17 A() { }
18 ~A() { AccessC(); printf("PASSED\n"); }
19 // CHECK-NOT: AddressSanitizer
20 // CHECK: PASSED
21};
22
23A a;
24
25class B {
26 public:
27 B() { exit(1); }
28 ~B() { }
29};
30
31B b;