dlopen / dlsym issue ? / Reproducing the issue
Peter S. Mazinger
ps.m at gmx.net
Tue Apr 11 10:16:36 UTC 2006
On Tue, 11 Apr 2006, Peter S. Mazinger wrote:
> On Tue, 11 Apr 2006 jean-marie.verdun at splitted-desktop.org wrote:
>
> > Ok Peter, Thanks for the update.
> > I will try to backport from svn to my 0.9.27 tree. Any chance to
> > have a test on 0.9.28 ?
>
> the only quick test I could do is w/ svn 20050627 (.28 was released on
> 20060817). It fails on arm (le).
sorry, 20050817 is release date of .28, you could maybe check if anything
relevant went into .28 between the 2 dates.
Peter
> >
> > Joakim, I will submit you a test case based on the small code I made to
> > dlopen stuff.
> >
> > Jm
> >
> >
> > On Tue, 11 Apr 2006, Peter S. Mazinger wrote:
> >
> > > On Tue, 11 Apr 2006 jean-marie.verdun at splitted-desktop.org wrote:
> > >
> > >> Hi,
> > >>
> > >> I have written a simple reproducer which make easily raise the bug.
> > >> just follow this into a chroot environment with 0.9.27 or 0.9.28
> > >>
> > >> mkdir test
> > >> cd test
> > >> mkdir test1
> > >> mkdir test2
> > >>
> > >> -> Edit module1.c
> > >> #include <stdio.h>
> > >>
> > >> void module_open()
> > >> {
> > >> printf("Module Open call ok module 1\n");
> > >> }
> > >>
> > >> -> Edit module2.c
> > >> #include <stdio.h>
> > >>
> > >> void module_open()
> > >> {
> > >> printf("Module Open call ok module 2\n");
> > >> }
> > >>
> > >> -> Edit main.c
> > >>
> > >> #include <stdio.h>
> > >> #include <stdlib.h>
> > >> #include <dlfcn.h>
> > >> int main()
> > >> {
> > >> void *handle;
> > >> void (*ptr)();
> > >> handle=dlopen("test2/module.so", RTLD_LAZY);
> > >> printf("Handle %lx\n",handle);
> > >> if (handle)
> > >> {
> > >> ptr=dlsym(handle,"module_open");
> > >> }
> > >> printf("Return function addr %lx\n",ptr);
> > >> (*ptr)();
> > >> handle=dlopen("test1/module.so", RTLD_LAZY);
> > >> printf("Handle %lx\n",handle);
> > >> if (handle)
> > >> {
> > >> ptr=dlsym(handle,"module_open");
> > >> }
> > >> printf("Return function addr %lx\n",ptr);
> > >> (*ptr)();
> > >>
> > >> return(0);
> > >> }
> > >>
> > >> Compile module1.c
> > >> gcc -c module1.c
> > >> gcc -o test1/module.so -shared module1.o
> > >>
> > >> Compile module2.c
> > >> gcc -c module2.c
> > >> gcc -o test2.module.so -shared module2.o
> > >>
> > >> Compile main.c
> > >> gcc main.c -ldl
> > >>
> > >> With a glibc environment
> > >> ./a.out
> > >> Handle 804a020
> > >> Return function addr 400166cc
> > >> Module Open call ok module 2
> > >> Handle 804a390
> > >> Return function addr 400196cc
> > >> Module Open call ok module 1
> > >>
> > >> With a uClibc enivironment
> > >> ./a.out
> > >> Handle 804a120
> > >> Return function addr 400bb440
> > >> Module Open call ok module 2
> > >> Handle 804a150
> > >> Return function addr 400bb440
> > >> Module Open call ok module 2
> > >
> > > uClibc-svn (native build on x86) is ok
> > >
> > > Peter
> > >>
> > >> There is 2 different handles but dlsym is not returning the right stuff.
> > >> I will try to investigate more today.
> > >>
> > >> Jm
> > >>
> > >>
> > >> On Tue, 11 Apr 2006, Joakim Tjernlund wrote:
> > >>
> > >>>
> > >>>>
> > >>>> Hi,
> > >>>>
> > >>>> I am using uClibc 0.97 as a test plateform to build a
> > >>>> lightweight graphical environment. I am trying to port on top
> > >>>> of a buildroot environment Enlightenment DR17
> > >>>> (http://www.enlightenment.org) which is under heavy
> > >>>
> > >>> .97(I assume this is really 0.9.27) is very old and lots has happened since then(in ldso as well).
> > >>> I think you should try both 0.9.28 and current SVN.
> > >>> If that doesn't work, show me the the RTLD_XX flags you are using and make sure
> > >>> that the .so libs has all dependencies in their DT_NEEDED list.
> > >>>
> > >>>>
> > >>>> I have included into my 0.97 source tree the lates ldso tree
> > >>>> from the CVS but without major success.
> > >>>
> > >>> Don't see how you can just rip out the ldso sub tree and make that work with current
> > >>> SVN. What did you do?
> > >>>
> > >>>
> > >>
> > >>
> > >
> > > --
> > > Peter S. Mazinger <ps dot m at gmx dot net> ID: 0xA5F059F2
> > > Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2
> > >
> >
> >
>
>
--
Peter S. Mazinger <ps dot m at gmx dot net> ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2
More information about the uClibc
mailing list