¿Cuál es el equivalente de GNU''s--wrap linker flag en OS X linker?
clang ld (1)
Enfrenté un problema similar, pero nunca encontré un equivalente. Los siguientes métodos alternativos pueden ayudar, dependiendo de lo que exactamente pretenda lograr.
1) Envolviendo símbolos durante la vinculación en OS X
2) https://discussions.apple.com/thread/617779?start=0&tstart=0
Estoy tratando de portar un programa C compilado con la cadena de herramientas GNU a OS X, pero su programa ld
predeterminado no admite la bandera --wrap
, que está presente en la ld
de GNU. Esto es de la página man de la ld
de GNU:
--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".
¿Hay una forma portátil de lograr esto?