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