Опасно ли перемещать переменную из .bss в .data? - PullRequest
0 голосов
/ 30 января 2019

У меня есть несколько глобальных буферов, которые GCC хочет поместить в bss.К сожалению, это приведет к тому, что раздел bss превысит свой выделенный размер.Я бы предпочел не менять файл компоновщика для этой путаницы проекта (есть много причин, просто пошутите здесь).

Опасно ли перемещать переменную из .bss в .data?

Я сделал это так:

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

Затем в файле компоновщика я добавил .data_queues в раздел .data.Я проверил файл карты, и буфер действительно находится в разделе .data.

Я запомнил data_queue в 0 в начале моей программы.

Возможно ли возникновение проблемесли я сделаю это?Это ужасная идея?Есть ли лучшее решение?

1 Ответ

0 голосов
/ 30 января 2019

Создайте свой собственный раздел.Не «перемещайте» этот сегмент .data, так как это UB (у вас нет соответствующих данных в сегменте .rodata).

Просто добавьте в свой скрипт компоновщика:

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

  } >RAM

uint8_t data_queue[256] __attribute__ ((section(".mysection"), used));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...