gcc:自定义部分中单独的代码和数据
我有一个软件,它正在从另一个工具链迁移到gcc(gcc:自定义部分中单独的代码和数据,gcc,sections,Gcc,Sections,我有一个软件,它正在从另一个工具链迁移到gcc(arm ONE eabi工具链)。在软件中,有几个自定义的部分,用于构造数据/代码,使用不同的内存组件 使用gcc工具链,我有一个带有自定义部分的链接器脚本文件。使用旧的工具链,我可以只使用#pragma section来处理一块代码和数据或整个文件。编译器使用给定的节名,在代码、数据、rodata和bss的相应节中内部分离此类#pragma节块。 对于gcc,我只有两个选择: 向每个变量/函数添加\uuuuuuuuuuuuuuuuuu属性((节(
arm ONE eabi工具链
)。在软件中,有几个自定义的部分,用于构造数据/代码,使用不同的内存组件
使用gcc工具链,我有一个带有自定义部分的链接器脚本文件。使用旧的工具链,我可以只使用#pragma section
来处理一块代码和数据或整个文件。编译器使用给定的节名,在代码、数据、rodata和bss的相应节中内部分离此类#pragma节
块。
对于gcc,我只有两个选择:
\uuuuuuuuuuuuuuuuuu属性((节(“”)
)\uuuu属性\uuu
关键字,则需要几天才能完成此操作
有没有办法告诉gcc将整个文件/整个块映射到一个特定的节,并自动分离数据和代码?假设节名为“mysection”,我想将整个文件映射到“mysection”,gcc应自动执行以下操作:
- 向“mysection.bss”添加非斜体变量
- 已将数据初始化为“mysection.data”
- 只读数据到“mysection.rodata”
- “mysection.text”的代码
gcc可以对标准节执行此操作。您可以通过调用
objcopy来补充Makefile中的编译命令:
for s in .bss .data .rodata .text; do
objcopy --rename-section $s=mysection$s file.o
done
您可以通过调用objcopy
来补充Makefile中的编译命令:
for s in .bss .data .rodata .text; do
objcopy --rename-section $s=mysection$s file.o
done
由于缺少#pragma节
或专用编译器标志,我不确定是否有办法实现这一点(我希望我错了)您可以编写一个脚本来扫描代码中的pragma,并将适当的属性附加到后面的函数。由于没有#pragma节
或专用的编译器标志,我不确定是否有办法实现这一点(我希望我错了)您可以编写一个脚本来扫描代码中的杂注,并将适当的属性附加到后面的函数。