Label 'xxxxx' is defined pubweak in a section implicitly declared root
기술노트 30605
아키텍처:
ARM, STM8
컴포넌트:
assembler
업데이트:
2021-05-04 오전 7:04
소개
IAR Embedded Workbench for ARM 버전 7.10.1 (혹은 상위버전) 또는 IAR Embedded Workbench for STM8 버전 2.10.1 (혹은 상위버전)으로 업그레이드 이후에 다음과 같은 메세지가
Warning[25] : Label 'xxxxx' is defined pubweak in a section implicitly declared root
기존 버전들에서는 문제가 되지 않았으나, 어셈블 과정에서 문제가 될 수 있습니다.
논의
암시적 :ROOT 플래그가 PUBWEAK가 사용되는 방식과 일치하지 않는 경우 IAR 어셈블러가 더 이상 사용되지 않는 어셈블러 구성에 대해 경고를 보냅니다.
예시로, 다음 줄을 참고하면:
PUBWEAK NMI_Handler
SECTION .text:CODE:REORDER(1)
NMI_Handler
이 경우 및 대부분의 경우 :NOROOT 플래그를 붙여 경고를 피하고 불일치를 제거할 수 있습니다.
어셈블러 지시어 SECTION의 구분은 다음과 같습니다:
SECTION section :type [:flag] [(align)]
더 자세한 정보는 IAR Assembler Reference Guide와 Section control directives를 참조하세요.
결론
대부분의 경우 SECTION 제어 지시어에 :NOROOT 플래그를 붙이는 것으로 경고 메세지를 피하거나 더 이상 사용하지 않는 구성을 제거하는 좋은 방법입니다:
PUBWEAK NMI_Handler
SECTION .text:CODE:REORDER:NOROOT(1)
NMI_Handler
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.