繁体   English   中英

将变量从.bss移到.data是否危险?

[英]Is it dangerous to move a variable from .bss to .data?

我有一些GCC希望放入bss的全局缓冲区。 不幸的是,这将导致bss节超出其分配的大小。 我宁愿不为这个项目的混乱而更改链接器文件(有很多原因,在这里让我很幽默)。

将变量从.bss移到.data是否危险?

我这样做是这样的:

uint8_t data_queue[256] __attribute__ ((section(".data_queues")));

然后在链接器文件中,将.data_queues添加到.data节。 我检查了地图文件,缓冲区确实在.data节中。

我在程序开始时将data_queue为0。

如果这样做,我可能会遇到问题吗? 这是一个可怕的主意吗? 有更好的解决方案吗?

创建自己的部分。 不要“移动”它执行.data段,因为它是UB(.rodata段中没有相应的数据)。

只需添加到您的链接描述文件:

  .mysection : 
  {
    KEEP(*(.mysection))           
    KEEP(*(.mysection*))         

  } >RAM

uint8_t data_queue[256] __attribute__ ((section(".mysection"), used));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM