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

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.

Reply | Reply to sender (private) | Synchronize
 * полезный приемчик программерам на С Д.П. [369 views] 1383 bytes +1
 *кстати malloc чаще всего такое и хочется сделать. Штирлиц [272 views] 485 bytes
 *Re: кстати malloc чаще всего такое и хочется сделать. Д.П. [274 views] 91 bytes
 *Мне известны только две ОС разрешенные для военных разработок. Штирлиц [197 views] 106 bytes
 *без MMU Штирлиц [206 views] 0 bytes
 *Прикольно для Debug билдов использовать. leonid [290 views] 44 bytes
 *я его к тестам приладил. страшное оружие, ага :-) Д.П. [238 views] 0 bytes
 *Re: в самой продвинутой ОС в мире, Mac OS X в систему такое встроено A. Fig Lee [275 views] 91 bytes
 *Да в Юниксе небось как и в Линуксе вообще поддержка демага маллоков встроена. Штирлиц [235 views] 35 bytes
 *Re: там вообще атас A. Fig Lee [246 views] 135 bytes
 *Это они QNX дразнят. Штирлиц [250 views] 29 bytes
 *Re: Это они QNX дразнят. A. Fig Lee [228 views] 33 bytes
 *там все на мессаджах, что позволяеть легко перейти с мелкой системы на распределенную по сети. И микрокернел Штирлиц [247 views] 63 bytes
 *Re: примерно как в Mac OS X, токо там не микро кернел, а гибридный A. Fig Lee [329 views] 35 bytes
 *QNX вроде не слабо бегает. Штирлиц [198 views] 62 bytes
 *Re: свои коллы подставлять вместо системных. -- тестировать свой средний уровень Д.П. [238 views] 295 bytes
 *Re: да, я забукмаркнул. Ты пиши если еще чего найдешь. A. Fig Lee [199 views] 0 bytes
 *Re: полезный приемчик программерам на С - мерси John Donne [254 views] 0 bytes