Я пытаюсь скомпилировать голую программу ARM Cortex-M3 с clang
. (Код и скрипт компоновщика работают нормально с g cc.)
Моя проблема в том, что clang
, кажется, испускает секцию .ARM.exidx
независимо от того, нужна она или нет.
Так как для мой код g cc не выдал раздел .ARM.exidx
, поэтому мой скрипт компоновщика не указывает для него регион. Однако кажется, что clang испускает его, как указано в этом сообщении об ошибке:
ld.lld: error: no memory region specified for section '.ARM.exidx'
clang: error: ld.lld command failed with exit code 1 (use -v to see invocation)
Есть ли способ избежать создания этого раздела, когда он не нужен?
Я пробовал опции -fno-unwind-tables
и -fno-exceptions
но, похоже, это известная ошибка, что они не работают должным образом. Посмотрите эти запросы на извлечение: D31139 и D31140
В настоящее время я работаю над этой проблемой со следующим определением раздела в сценарии компоновщика:
/DISCARD/ :
{
*(.ARM.exidx)
}
Кажется, это немного fr agile, хотя, так как раздел будет отсутствовать, если из-за каких-либо изменений в коде, раздел потребуется позже.