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