blob: b5fa1cdd715456e0515fed284c89bfa07e7e4154 [file] [log] [blame]
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include <stdint.h>
int main(int argc, char **argv)
{
int ret = EXIT_SUCCESS;
void *handle;
void (*mydltest)(void *value1, void *value2);
char *error;
uint32_t *value1, *value2;
handle = dlopen (LIBNAME, RTLD_LAZY);
if (!handle) {
fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
exit(1);
}
mydltest = dlsym(handle, "dltest");
if ((error = dlerror()) != NULL) {
fprintf(stderr, "Could not locate symbol 'dltest': %s\n", error);
exit(1);
}
mydltest(&value1, &value2);
printf("dltest: pthread_once=%p\n", value1);
printf("dltest: pthread_self=%p\n", value2);
if (value1 == value2) {
ret = EXIT_FAILURE;
printf("dltest: values should NOT be equal Weak values resolved incorrectly!\n");
} else {
printf("dltest: weak symbols resoved correctly.\n");
}
dlclose(handle);
return ret;
}