Related articles |
---|
How to link file with wrapper function vasvibhatt@gmail.com (Vasvi Kakkad) (2008-11-04) |
Re: How to link file with wrapper function dmaze@mit.edu (David Z Maze) (2008-11-04) |
Re: How to link file with wrapper function spam@altium.nl (2008-11-04) |
Re: How to link file with wrapper function bill@qswtools.com (Bill Cox) (2008-11-08) |
From: | Bill Cox <bill@qswtools.com> |
Newsgroups: | comp.compilers |
Date: | Sat, 08 Nov 2008 21:18:52 -0800 |
Organization: | at&t http://my.att.net/ |
References: | 08-11-018 |
Keywords: | GCC, linker |
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:
--wrap symbol
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:
void *
__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
malloc
Regards,
Bill
Return to the
comp.compilers page.
Search the
comp.compilers archives again.