[Gc] Status of gc on Mac OS X - gc_cpp issue

skaller skaller at users.sourceforge.net
Thu Oct 5 08:40:57 PDT 2006


On Thu, 2006-10-05 at 14:48 +0200, Renaud Blanch wrote:

> After further investigation, this is an issue with shared library  
> support.
> Linking with gc shared libraries does not override the default  
> delete, whereas linking statically does.
> For example :
> g++ -o test_cpp tests/test_cpp.o -lgc -lgccpp -L./.libs
> does not intercept delete but
> g++ -o test_cpp tests/test_cpp.o .libs/libgc.a .libs/libgccpp.a
> works fine.
> 
> Maybe this should be reported as a gcc bug ?
> I have not been able to find a workaround this, even using the  
> LD_PRELOAD environment variable.

Hmm ... option to ld, no idea if this will help .. 


 --wrap symbol
  Use a wrapper function for symbol.  Any undefined reference to sym‐
  bol  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".



-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


More information about the Gc mailing list