在链接时将多个目标文件中的符号连接到表(例如vtable)中

时间:2018-08-03 19:05:59

标签: linker vtable object-files

这可能无法实现,但是我想做一些类似于在链接时构建vtable的事情。也就是说,首先,我想在单独的目标文件中独立发出各种功能符号。然后,我希望链接器构建一个表,在该表中顺序添加符号,并能够引用该表中的条目。

我研究了如何滥用链接脚本和/或重定位条目来构建该表,但是找不到任何令人满意的解决方案。

您见过这样的事情吗?关于如何实现这一目标的任何提示?

1 个答案:

答案 0 :(得分:2)

  

我找不到令人满意的解决方案。

假设您分别定义a.ob.oc.o的{​​{1}},a()b()

创建并编译此源:

c()

现在将它们链接在一起:

// table.c
extern void a(), b(), c();
void (*table[])() = { &a, &b, &c, 0 };

Voila:您有一个表格,其中所有符号均按顺序添加。