1 // Test that __orc_rt_macho_jit_dlopen and __orc_rt_macho_jit_dlclose work as
2 // expected for a straightforward dlopen; dlclose sequence: first the
3 // constructors should be run, then destructors.
5 // RUN: %clang -c -o %t.inits.o %p/Inputs/standalone-ctor-and-cxa-atexit-dtor.S
6 // RUN: %clang -c -o %t.test.o %s
7 // RUN: %llvm_jitlink \
8 // RUN: -alias Platform:_dlopen=___orc_rt_macho_jit_dlopen \
9 // RUN: -alias Platform:_dlclose=___orc_rt_macho_jit_dlclose \
10 // RUN: %t.test.o -jd inits %t.inits.o -lmain | FileCheck %s
12 // CHECK: entering main
13 // CHECK-NEXT: constructor
14 // CHECK-NEXT: destructor
15 // CHECK-NEXT: leaving main
17 int printf(const char * restrict format
, ...);
18 void *dlopen(const char* path
, int mode
);
19 int dlclose(void *handle
);
21 int main(int argc
, char *argv
[]) {
22 printf("entering main\n");
23 void *H
= dlopen("inits", 0);
28 if (dlclose(H
) == -1) {
32 printf("leaving main\n");