A proposed change to Xorg upstream would use GNU ld's -wrap option
to simplify some of the test cases that have to override functions
with test wrappers - is there a Solaris ld equivalent of this
functionality?   A command line equivalent would be preferable, but
a mapfile option could be made to work.   It seems like it's a
combination of symbol renaming, direct linking and an automatic
dlsym alias to the function in a linked library.

The GNU ld documentation of this option:

  --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.

(copied from
http://sourceware.org/binutils/docs-2.19/ld/Options.html#index-g_t_002d_002dwrap-249
)

-- 
        -Alan Coopersmith-           alan.coopersmith at sun.com
         Sun Microsystems, Inc. - X Window System Engineering


Reply via email to