静态库中的Shim函数

时间:2016-03-24 02:01:39

标签: linux linker shim

我有一个不透明的静态链接库(.a文件)和一些不透明的目标文件(.o),它们调用所述静态库中的函数。我想在静态库中添加一些函数调用的包装器。

如果它是一个动态库,我会在运行时使用LD_PRELOAD,但由于这是静态链接的,我确信我将不得不使用编译时技术。我在想-Z muldefs,它允许我覆盖函数调用,但我仍然需要能够在我的垫片中调用原始函数,所以我无法直接使用它。

到目前为止,我能想出的最佳解决方案是使用objcopy --redefine-sym重命名不透明库中的函数,然后让我的shim代码按其新名称调用函数。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

  

有更好的方法吗?

不,这是你能做的最好的事情。