【问题标题】:variable attributes changes between GCC versions - "nobits"GCC 版本之间的变量属性变化 - “nobits”
【发布时间】:2021-04-05 14:29:19
【问题描述】:

我的项目使用的是旧版本的 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 版本中是否有执行此操作的选项?

【问题讨论】:

    标签: gcc memory-management linker arm embedded


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,另一个后续问题,有没有办法让一个部分成为占位符?我希望该部分仅存在于“运行时”而不是图像本身。
    • @Itay 我确定有,但你应该发布一个新问题。 SO 不是讨论论坛。除了玩具之外,评论的问题会吸引更多的观众 - 不仅仅是我!
    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2014-08-22
    相关资源
    最近更新 更多