Re: How to link file with wrapper function

Bill Cox <bill@qswtools.com>
Sat, 08 Nov 2008 21:18:52 -0800

          From comp.compilers

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)
| List of all articles for this month |
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



Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.