полезный приемчик программерам на С

Author: Д.П. [370 views] 2012-11-26 18:49:37

Недавно открыл для себя в GNU ld (binutils) такую опцию, рекомендации лучших собаководов. Иех, и еще вопрос - почему за 15 лет существования этой опции никто мне её не подсказал? Это-то при работе в Си-конторе...

--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 ©;
}


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.

From:
Password:
Subject:
[b] [i] [u] [s]     [quote] [code] [tmdb] [sarcasm]  [url=]Title[/url]  [img=]
Preview first NSFW
Smileys  BBCode help  Translit help
[b]bolded text[/b]bolded text
[i]italicized text[/i]italicized text
[u]underlined text[/u]underlined text
[s]strikethrough text[/s]strikethrough text
[url]http://example.org[/url]http://example.org
[url=http://example.com]Example[/url]Example
[quote]quoted text[/quote]quoted text
[code]monospaced text[/code]monospaced text
[sarcasm]reverse italicized text[/sarcasm]sarcasm
[color=red]Red Text[/color]Red Text
[color=#FF0000]Red Text[/color]Red Text
[color=FF0000]Red Text[/color]Red Text
[size=15]Large Text[/size]Large Text
[img=https://www.kirdyk.club/images/Tip-Hat.gif]
А=AБ=BВ=VГ=GД=DЕ=EЁ=JOЖ=ZHЗ=ZИ=I
Й=JК=KЛ=LМ=MН=NО=OП=PР=RС=SТ=T
У=UФ=FХ=HЦ=CЧ=CHШ=SHЩ=XHЪ=##Ы=YЬ=''
Э=WЮ=JUЯ=JA
а=aб=bв=vг=gд=dе=eё=joж=zhз=zи=i
й=jк=kл=lм=mн=nо=oп=pр=rс=sт=t
у=uф=fх=hц=cч=chш=shщ=xhъ=#ы=yь='
э=wю=juя=ja