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

source code of compiler-rt/test/builtins/Unit/dso_handle.cpp