2016-03-24 30 views
0

我有一個不透明的靜態鏈接庫(.a文件)和一些不透明的目標文件(.o),它們調用所述靜態庫中的函數。我想在靜態庫中的一些函數調用中添加包裝。靜態庫中的Shim函數

如果它是一個動態庫,我會在運行時使用LD_PRELOAD,但由於這是靜態鏈接的,我相信我將不得不使用編譯時技術。我想-Z muldefs,這將允許我重寫函數調用,但我仍然需要能夠調用我的墊片中的原始函數,所以我不能直接使用它。

到目前爲止,我可以想出的最佳解決方案是使用objcopy --redefine-sym重新命名不透明庫中的函數,然後使我的填充代碼按其新名稱調用函數。有沒有更好的辦法?

回答

1

有沒有更好的方法?

不,這是你能做的最好的。