IAR Warning[25]: Label .. is defined pubweak in a section implicitly declared root |
![]() |
Добавил(а) microsin |
После обновления до версии 7.10.1 (или более новой) среды разработки IAR Embedded Workbench for ARM или на версию 2.10.1 (или более новую) IAR Embedded Workbench for STM8 при компиляции кода ассемблера может появляться предупреждение примерно такого рода: Warning[25]: Label 'Reset_Handler' is defined pubweak in a section implicitly declared root .\STM32-E_revE_demo\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F2xx\startup\iar\startup_stm32f2xx.s 160 Ассемблер IAR выдает это предупреждение на устаревшей конструкции ассемблера, где неявный флаг :ROOT не соответствует способу использования PUBWEAK. Например, рассмотрим следующие строки кода: PUBWEAK NMI_Handler SECTION .text:CODE:REORDER(1) NMI_Handler
Здесь, как и в большинстве других случаев, Вы должны добавить флаг :NOROOT, чтобы снять несоответствие и избежать появления предупреждения. Синтаксис директивы ассемблера SECTION следующий: SECTION секция :тип [:флаг] [(выравнивание)] Дополнительную информацию можно найти в [2], см. раздел "Section control directives". В большинстве случаев добавление :NOROOT к директиве управления SECTION - хороший способ удалить устаревшую конструкцию и избежать появления warning: PUBWEAK NMI_Handler SECTION .text:CODE:REORDER:NOROOT(1) NMI_Handler
NOREORDER (режим по умолчанию) начинает новый фрагмент в секции с указанным именем, или новую секцию, если секции с таким именем еще нет. REORDER начинает новую секцию с указанным именем. ROOT (режим по умолчанию) показывает, что этот фрагмент секции не должен отбрасываться. NOROOT означает, что этот фрагмент кода отбрасывается линкером, если ни к какому символу из этой секции нет внешнего обращения. Обычно все фрагменты секции, кроме кода запуска (startup code) и векторов прерываний, должны установить этот флаг. Примечание: что такое weak-символ, см. в статье [3]. [Ссылки] 1. Technical Note 30605 Label 'xxxxx' is defined pubweak in a section implicitly declared root site:iar.com. |