1272343Sngie#include <dlfcn.h> 2272343Sngie#include <err.h> 3272343Sngie#include <unistd.h> 4272343Sngie 5272343Sngieint 6272343Sngiemain(void) 7272343Sngie{ 8272343Sngie static const char msg1[] = "main started\n"; 9272343Sngie static const char msg2[] = "main after dlopen\n"; 10272343Sngie static const char msg3[] = "main terminated\n"; 11272343Sngie 12272343Sngie void *handle; 13272343Sngie 14272343Sngie write(STDOUT_FILENO, msg1, sizeof(msg1) - 1); 15272343Sngie handle = dlopen("h_initfini3_dso.so", RTLD_NOW | RTLD_LOCAL); 16272343Sngie if (handle == NULL) 17272343Sngie err(1, "dlopen"); 18272343Sngie write(STDOUT_FILENO, msg2, sizeof(msg2) - 1); 19272343Sngie dlclose(handle); 20272343Sngie write(STDOUT_FILENO, msg3, sizeof(msg3) - 1); 21272343Sngie return 0; 22272343Sngie} 23