1 // RUN: %clangxx -g -DCRT_SHARED -c %s -fPIC -o %tshared.o
2 // RUN: %clangxx -g -c %s -fPIC -o %t.o
3 // RUN: %clangxx -g -shared -o %t.so -nostdlib %crti %crtbegin %tshared.o %libstdcxx -lc -lm %libgcc %crtend %crtn
4 // RUN: %clangxx -g -o %t -nostdlib %crt1 %crti %crtbegin %t.o %libstdcxx -lc -lm %libgcc %t.so %crtend %crtn
5 // RUN: %run %t 2>&1 | FileCheck %s
6
7 // UNSUPPORTED: arm, aarch64
8
9 #include <stdio.h>
10
11 // CHECK: 1
12 // CHECK-NEXT: ~A()
13
14 #ifdef CRT_SHARED
15 bool G;
C()16 void C() {
17 printf("%d\n", G);
18 }
19
20 struct A {
AA21 A() { G = true; }
~AA22 ~A() {
23 printf("~A()\n");
24 }
25 };
26
27 A a;
28 #else
29 void C();
30
main()31 int main() {
32 C();
33 return 0;
34 }
35 #endif
36