gpt4 book ai didi

c - 如何获取自定义 ELF 部分的开始和结束地址?

转载 作者:太空狗 更新时间:2023-10-29 16:33:47 27 4
gpt4 key购买 nike

我在 Linux 上使用 C 语言工作。我看过 gcc __section__ attribute 的用法(尤其是在 Linux 内核中)将数据(通常是函数指针)收集到自定义 ELF 部分中。如何检索和使用放置在这些自定义部分中的“内容”?

最佳答案

只要节名称产生有效的 C 变量名称,gcc(ld,而是)生成两个魔法变量:__start_SECTION__stop_SECTION。这些可用于检索部分的开始和结束地址,如下所示:

/**
* Assuming you've tagged some stuff earlier with:
* __attribute((__section__("my_custom_section")))
*/

struct thing *iter = &__start_my_custom_section;

for ( ; iter < &__stop_my_custom_section; ++iter) {
/* do something with *iter */
}

我找不到任何关于此功能的正式文档,只有一些晦涩的邮件列表引用。如果您知道文档在哪里,请发表评论!

如果您使用自己的链接描述文件(就像 Linux 内核那样),您必须自己添加魔术变量(参见 vmlinux.lds.[Sh]this SO answer) .

参见 here另一个使用自定义 ELF 部分的示例。

关于c - 如何获取自定义 ELF 部分的开始和结束地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com