From fec8e9db57394a77a9f757aab4c342baa098a1aa Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Mon, 1 Sep 2003 23:43:42 +0000 Subject: move the ldso tests to dlopen where they belong --- test/dlopen/dltest.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 test/dlopen/dltest.c (limited to 'test/dlopen/dltest.c') diff --git a/test/dlopen/dltest.c b/test/dlopen/dltest.c new file mode 100644 index 000000000..244f3b76b --- /dev/null +++ b/test/dlopen/dltest.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +#ifdef __UCLIBC__ +extern void _dlinfo(void); +#endif + +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 ./libtest.so: %s\n", 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_return_0=%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; +} + -- cgit v1.2.3