Posted on 2011-06-03 23:01
S.l.e!ep.¢% 閱讀(595)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Unix
`--wrap SYMBOL'
對(duì)SYMBOL符號(hào)使用包裝函數(shù). 任何未定義的對(duì)SYMBOL符號(hào)的引用會(huì)被解析成'_wrap_SYMBOL'. 而任何
未定義的對(duì)'_real_SYMBOL'的引用會(huì)被解析成SYMBOL.
這可以用來為系統(tǒng)函靈敏提供一個(gè)包裝. 包裝函靈敏應(yīng)當(dāng)被叫做'__wrap_SYMBOL'. 如果需要調(diào)用這個(gè)
函數(shù), 那就應(yīng)該調(diào)用'__real_SYMBOL'
這里是一個(gè)沒什么實(shí)用價(jià)值的例子:
void *
__wrap_malloc (int c)
{
printf ("malloc called with %ld\n", c);
return __real_malloc ?;
}
如果你使用'--wrap malloc'把這節(jié)代碼跟其他的代碼連接, 那所有的對(duì)'malloc'的調(diào)用都會(huì)調(diào)用
'__wrap_malloc'函數(shù). 而在'__wrap_malloc'中的'__real_malloc'會(huì)調(diào)用真正的'malloc'函數(shù).
你有可能也希望提供一個(gè)'__real_malloc'函數(shù), 這樣,不帶有'--wrap'的連接器也會(huì)成功連接.如果
你這樣做了, 你不能把'__real_malloc'的定義跟'__wrap_malloc'放到同一個(gè)文件中;如果放在一起
匯編器會(huì)在連接器之前把調(diào)用解析成真正的'malloc'.
`--enable-new-dtags'
`--disable-new-dtags'
連接器可以在ELF中創(chuàng)建一個(gè)新的動(dòng)態(tài)標(biāo)簽. 但是舊的ELF系統(tǒng)可能不理解這個(gè). 如果你指定了
'--enable-new-dtags',動(dòng)態(tài)標(biāo)簽會(huì)按需要被創(chuàng)建. 如果你指定了'--disable-new-dtags',那不會(huì)有
新的動(dòng)態(tài)標(biāo)簽被創(chuàng)建. 缺省地,新的動(dòng)態(tài)標(biāo)簽不會(huì)被創(chuàng)建. 注意這些選項(xiàng)只在ELF系統(tǒng)中有效.