1 // FIXME: https://code.google.com/p/address-sanitizer/issues/detail?id=316
2 // XFAIL: android
3 //
4 // Test for the following situation:
5 // (1) global A is constructed.
6 // (2) exit() is called during construction of global B.
7 // (3) destructor of A reads uninitialized global C from another module.
8 // We do *not* want to report init-order bug in this case.
9 
10 // RUN: %clangxx_asan -O0 %s %p/Helpers/init-order-atexit-extra.cc -o %t
11 // RUN: env ASAN_OPTIONS=strict_init_order=true not %run %t 2>&1 | FileCheck %s
12 
13 #include <stdio.h>
14 #include <stdlib.h>
15 
16 void AccessC();
17 
18 class A {
19  public:
A()20   A() { }
~A()21   ~A() { AccessC(); printf("PASSED\n"); }
22   // CHECK-NOT: AddressSanitizer
23   // CHECK: PASSED
24 };
25 
26 A a;
27 
28 class B {
29  public:
B()30   B() { exit(1); }
~B()31   ~B() { }
32 };
33 
34 B b;
35