This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: dlopen(RTLD_NOW|RTLD_GLOBAL) / dlsym(RTLD_NEXT) question


I've made significant progress since my last mail.

It seems that dlsym(RTLD_NEXT, "foo") does not work when the libraries are loaded during runtime :

cat > chain5.c <<EOF
#include <dlfcn.h>
int main() {
       void *l1, *l2, *l3, *l4;
       void (*bar)();

       l1 = dlopen("lib1.so", RTLD_NOW | RTLD_GLOBAL);
       bar = (void (*)()) dlsym(l1, "foo");
printf("l1 is %x l1.foo is %x\n", l1, bar);

       l2 = dlopen("lib2.so", RTLD_NOW | RTLD_GLOBAL);
       bar = (void (*)()) dlsym(l2, "foo");
printf("l2 is %x l2.foo is %x\n", l2, bar);

       l3 = dlopen("lib3.so", RTLD_NOW | RTLD_GLOBAL);
       bar = (void (*)()) dlsym(l3, "foo");
printf("l3 is %x l3.foo is %x\n", l3, bar);

       l4 = dlopen("lib4.so", RTLD_NOW | RTLD_GLOBAL);
       bar = (void (*)()) dlsym(l4, "foo");
printf("l4 is %x l4.foo is %x\n", l4, bar);

       bar = (void (*)()) dlsym(l1, "foo");
printf("l1.foo is %x \n", bar);
       bar = (void (*)()) dlsym(l2, "foo");
printf("l2.foo is %x \n", bar);
       bar = (void (*)()) dlsym(l3, "foo");
printf("l3.foo is %x \n", bar);
       bar = (void (*)()) dlsym(l4, "foo");
printf("l4.foo is %x \n", bar);

       bar = (void (*)()) dlsym(RTLD_DEFAULT, "foo");
printf("default foo is %x \n", bar);

       bar();
       dlclose(l4);
       dlclose(l3);
       dlclose(l2);
       dlclose(l1);
       return 0;
}
EOF
gcc chain5.c -o chain5 -ldl -D_GNU_SOURCE

chain5
l1 is 804a018 l1.foo is 5556d584
l2 is 804a3b0 l2.foo is 55570584
l3 is 804a710 l3.foo is 55572584
l4 is 804aa70 l4.foo is 55574584
l1.foo is 5556d584
l2.foo is 55570584
l3.foo is 55572584
l4.foo is 55574584
default foo is 5556d584
lib1.foo()

Shall I consider it as a feature or as a bug ?

regards,

Yann LANGLAIS
18, avenue Nationale
91300 MASSY
06 67 11 07 10
langlais@ilay.org
http://ilay.org

---
   I r i s
L i l a
é   A n g e l a
o   Y a n n
   . O R G


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]