Yang Yingliang <[email protected]> wrote on 2014/09/25 06:04:54: > > Hi, > > I encountered a problem, when I used dlsym with RTLD_DEFAULT. > > E.g. > > $ cat test.c > #include <dlfcn.h> > #include <stdio.h> > > int main(void) > { > void *libaa = dlopen("./aa.so", RTLD_LAZY); > void (*aaTest1)(void *); > > if (libaa == NULL) { > printf("dlopen failed\n"); > return 1; > } > > aaTest1 = dlsym(libaa, "aaTest1"); > > (*aaTest1)(libaa); > > dlclose(libaa); > return 0; > } > > $ cat aa.c > #define _GNU_SOURCE > #include <dlfcn.h> > #include <stdio.h> > > int aaSymbol; > > void *aaTest1(void *libaa) > { > printf("%p\n", dlsym(RTLD_DEFAULT, "aaSymbol")); > > return NULL; > } > > Using uclibc: > > $ CC -o test test.c -ldl > $ CC -o aa.so aa.c -shared -fPIC -ldl > $ ./test > (nil) > > > Using glibc: > > $ CC -o test test.c -ldl > $ CC -o aa.so aa.c -shared -fPIC -ldl > $ ./test > 0x7ffcbbb4e030 > > I cannot find the symbols of libaa.so in libaa with RTLD_DEFAULT, > but it can be found with using glibc. > > Is it a bug or just different from glibc ?
Both RTLD_DEFAULT and RTLD_NEXT behaviour feels like a bug, I just guessing though _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
