|How to link file with wrapper function email@example.com (Vasvi Kakkad) (2008-11-04)|
|Re: How to link file with wrapper function firstname.lastname@example.org (David Z Maze) (2008-11-04)|
|Re: How to link file with wrapper function email@example.com (2008-11-04)|
|Re: How to link file with wrapper function firstname.lastname@example.org (Bill Cox) (2008-11-08)|
|From:||Bill Cox <email@example.com>|
|Date:||Sat, 08 Nov 2008 21:18:52 -0800|
|Posted-Date:||09 Nov 2008 12:45:27 EST|
Vasvi Kakkad wrote:
> I have written wrapper functions for some predefined library functions in C.
> Can anybody help me how do I build the sourcecode of gcc with new
> functions and how to link my wrapper lib prior to standard lib? Do I
> to change makefile settings??
You don't need to change gcc at all, only your application's Makefile.
The current version of the GNU linker supports this with an option.
I cut this out of the online ld version 2.14 docs:
Use a wrapper function for symbol. Any undefined reference to
symbol will be resolved to __wrap_symbol. Any undefined reference
to __real_symbol will be resolved to symbol. This can be used to
provide a wrapper for a system function. The wrapper function
should be called __wrap_symbol. If it wishes to call the system
function, it should call __real_symbol.
Here is a trivial example:
__wrap_malloc (int c)
printf ("malloc called with %ld\n", c);
return __real_malloc (c);
If you link other code with this file using '--wrap malloc', then
all calls to malloc will call the function __wrap_malloc instead.
The call to __real_malloc in __wrap_malloc will call the real
malloc function. You may wish to provide a __real_malloc function
as well, so that links without the '--wrap' option will succeed. If
you do this, you should not put the definition of __real_malloc in
the same file as __wrap_malloc; if you do, the assembler may
resolve the call before the linker has a chance to wrap it to
Return to the
Search the comp.compilers archives again.