我有一个软件,正在从另一个工具链迁移到gcc(arm-none-eabi toolchain
)。在软件中有一些自定义的部分,以便构造数据/代码,使用不同的内存组件。
使用gcc工具链,我有一个包含自定义部分的链接描述文件。使用旧的工具链,我可以使用#pragma section
来获取代码和数据块或整个文件。编译器在内部使用给定的节名称分隔代码,数据,rodata和bss的相应部分中的#pragma section
块。
使用gcc我只有两个选择:
__attribute__((section(""))
添加到每个变量/函数我的问题是,我现在有大约300个文件必须处理并映射到特定部分,同时保留代码/数据分离。这些文件包含数据和代码。
因此,如果我使用链接描述文件映射文件,那么所有数据和代码都将映射到此特定部分,无需代码和数据分离。
如果我将__attribute__
关键字添加到每个变量/函数中,则需要数天才能完成此操作。
有没有办法告诉gcc将整个文件/整个块映射到特定部分,并自动分离数据和代码?让我们说部分名称是" mysection",我想将整个文件映射到" mysection"和gcc应自动执行以下操作:
gcc能够为标准部分执行此操作。
答案 0 :(得分:0)
您可以通过调用objcopy
来补充Makefile中的编译命令:
for s in .bss .data .rodata .text; do
objcopy --rename-section $s=mysection$s file.o
done