8.3.26 Wrap Option
The --wrap symbol
option uses wrapper functions for symbol
.
Any undefined references to symbol will be resolved to __wrap_symbol
. (Note the two leading underscores
used with these symbols.) Any undefined references 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
.
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
.