You don’t have to do this yourself with LD_PRELOAD, although it doesn’t really save you much!
--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 (size_t c)
{
printf ("malloc called with %zu\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".

Post a Comment