"ld --wrapper" but without changing legacy executable, possible?

sean yang seanatpurdue@hotmail.com
Tue Mar 21 02:23:00 GMT 2006


I know we can do a if(!=NULL) to get it around.
I guess there could be some clever way, say analogy to the .PLT entry 
filling.



>From: Paul Brook <paul@codesourcery.com>
>To: binutils@sourceware.org
>CC: "sean yang" <seanatpurdue@hotmail.com>
>Subject: Re: "ld --wrapper" but without changing legacy executable, 
>possible?
>Date: Tue, 21 Mar 2006 01:23:23 +0000
>
> > //runtimewrapper.c
> >      1 #define _GNU_SOURCE
> >       2 #include <stdio.h>
> >       3 #include <dlfcn.h>
> >       4 void* malloc(int size) {
> >       5     printf("wrapped malloc\n");
> >       6     void* (*real_malloc)(const char*, const char*) =
> >       7     dlsym(RTLD_NEXT, "malloc");
> >       8     return real_malloc(size);
> >       9 }
> >...
> > But the problem of above approach is that " void* (*real_malloc)(const
> > char*, const char*) = dlsym(RTLD_NEXT, "malloc");" is called each time 
>the
> > application want to use malloc(), which is the major source of overhead.
>
>Unless I'm missing something the answer is "Don't do that then". ie. only 
>call
>dlsym the first time the wrapper is run.
>
>Paul

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/



More information about the Binutils mailing list