gpt4 book ai didi

c - GCC 链接器 : move a symbol in a specified section

转载 作者:太空狗 更新时间:2023-10-29 15:28:55 29 4
gpt4 key购买 nike

可以将代码中的一些函数移动到特定的部分在可执行文件上?如果是,怎么办?

对于一个用gcc编译的应用程序,我们有更多的源文件,包括X.c.每个对象都是从关联的源代码编译的(X.o 从 X.c 获得),链接器生成一个大的可执行文件。

我需要 X.c 中的两个函数位于可执行文件,比如 .magic_section。我想要这个的原因是该部分将加载到与其余部分不同的另一个内存区域。

我的问题是我无法更改源 X.c,否则我会使用一个特定的标志,例如 __attribute__ ((section ("magic_section"))) 用于功能。

我在 linker 的文档中阅读了一些内容并为链接器编写了自定义脚本,但我未能指定必须在哪个部分放置特定符号。我只移动了整个部分。

最佳答案

你可能会做的(不是很好,但理论上应该可行)是使用 --function-sections--data-sections,假设您的 GCC 版本/体系结构支持这些选项,然后使用链接描述文件手动调出需要进入给定文件的所有函数和变量。

这会创建名为 .text.function_name.data.variable_name 的部分。如果您熟悉通过 gcc 属性分配节,我假设您知道在链接器中做什么。

作为一个优势,如果您实际上不希望整个文件进入魔术部分,那么您可以选择函数。

关于c - GCC 链接器 : move a symbol in a specified section,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229281/

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