代码之家  ›  专栏  ›  技术社区  ›  Matthew Iselin

从多个对象文件创建类似于.ctors的列表

  •  0
  • Matthew Iselin  · 技术社区  · 14 年前

    但是,当对象文件静态链接时,内核无法“检测”它们的存在,因此我需要一种方法来告诉内核init/fini函数的存在,而不需要将它们的存在硬编码到内核中-它需要是可扩展的。我认为解决这个问题的一个方法是将所有init/fini函数指针放在它们自己的部分中—与您对.ctors和.dtor的期望大致相同—并在相关时间调用它们。

    请注意,它们实际上不能进入.ctor,因为它们需要特定的支持才能在被调用时运行(如果您感兴趣的话,具体来说就是线程和内存管理)。

    将一堆任意函数指针放入特定节的最佳方式是什么?更好的是,有没有可能将任意数据注入到一个节中,这样我也可以存储模块名之类的内容(基本上是结构而不是函数指针)。使用GCC来武装elf。

    1 回复  |  直到 11 年前
        1
  •  0
  •   ninjalj    14 年前

    GCC属性可用于指定节:

    __attribute__((section("foobar")))