GCC 版本之间的变量属性更改 - “nobits”

时间:2021-04-05 14:29:19

标签: gcc memory-management linker arm embedded

我在我的项目中使用了旧版本的 GCC(版本 6.3.0) - arm 处理器。 然后我转向了一个更新的版本(版本 10.2.1 20201103)——arm 处理器。

当我希望特定部分仅作为“空间持有者”时,例如,对于工作记忆,我使用了一个属性

__attribute__((section(".sctionName,\"aw\",@nobits#")))

在使用新的 GCC 版本时出现错误:

Error: junk at end of line, first unrecognized character is `,'

在新的 GCC 版本中是否可以选择执行此操作?

1 个答案:

答案 0 :(得分:3)

部分属性语法在 gcc 6gcc 10 之间没有变化。 section 的参数只是部分名称; ,\"aw\",@nobits# 部分似乎是将限定符注入生成的汇编代码的“肮脏技巧”(根据 What does the "aw" flag in the section attribute mean?)。然而,gcc 10 显然会检查有效的节名称,其中 gcc 6 允许任何旧文本并将其插入到代码中。

您可能需要一种更“官方”的方式来定义该部分的行为。也许通过链接器脚本?

相关问题