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