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

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.