the app dlopen the libmya.so,
the libmya.so is depend on libmyb.so

now,the mode of dlopen is RTLD_LOCAL,for example,
void *handle = dlopen("libmya.so", RTLD_LAZY|RTLD_LOCAL);

if there is a globle variable int the libmya.so, can the function in the
libmyb.so find it ?

just as below
app dlopen  the libmya.so
when compile and link the libmya.so, we just do

gcc -shared -fPIC libmya.c ./libmyb.so -o libmya.so

now ,if in the uclibc , the variable a in funcb will not be found
in the glibc ,the variable will be found.

i have read the source code of ld.so and libdl.so in the uclibc.0.9.32
but i wander which implementation is right ?or it just a bug of uclibc?


 /* app */

 #include<dlfcn.h>
 int main(int argc,char *argv[])
 {
   void (* func)();
   void *handle = dlopen("libmya.so", RTLD_LAZY|RTLD_LOCAL);
   if(!handle)
  {
   return;
   }
  func = dlsym(handle, "funca");
  func();
  dlclose(handle);
  return 0;
 }




/* libmya.so */

 int a=1;
 void funca
 {
   funcb();
 }


/*  libmyb.so */

extern int a;
 void funcb
 {
   a=1;
 }
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to