1679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <stdlib.h>
2679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <stdio.h>
3679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <dlfcn.h>
4679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato
5679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damatoint main(int argc, char **argv) {
6679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	void *handle;
7679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	int (*test)(int);
8679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	char *error;
9679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato
10679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	handle = dlopen ("liblibdl-simple.so", RTLD_LAZY);
11679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	if (!handle) {
12679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato		fputs (dlerror(), stderr);
13679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato		exit(1);
14679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	}
15679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato
16679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	test = dlsym(handle, "test_libdl");
17679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	if ((error = dlerror()) != NULL)  {
18679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato		fputs(error, stderr);
19679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato		exit(1);
20679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	}
21679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato
22679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	printf("%d\n", test(5));
23679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato	dlclose(handle);
24679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato}
25