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