Warning[25]: Label 'xxxxx' is defined pubweak in a section implicitly declared root

基於創建STM32工程時編譯會出現大量警告,參考IAR官網解決方法:

https://www.iar.com/support/tech-notes/assembler/warning25-label-xxxxx-is-defined-pubweak-in-a-section-implicitly-declared-root/


Technical Note 30605

Targets:
ARM, STM8

Component:
Assembler

Updated:
2015/9/3 13:18

Introduction

After upgrading to version 7.10.1 (or later) of IAR Embedded Workbench for ARM or to version 2.10.1 (or later) of IAR Embedded Workbench for STM8 a message similar to

Warning[25]:Label'xxxxx'isdefined pubweak in a section implicitly declared root

might  be issued during assembly, even though there were no such warnings in earlier version(s).

Discussion

The IAR Assembler is issuing the warning for a deprecated assembler construction where an implicit :ROOT flag is inconsistent with how PUBWEAK is used.

As an example, consider these lines:

     PUBWEAK NMI_Handler 
     SECTION .text:CODE:REORDER(1)
NMI_Handler 

In this, and most other cases, you should add a :NOROOT flag to remove the inconsistency and avoid the warning.

The syntax for the assembler directive SECTION is:

     SECTION  section :type [:flag][(align)]

More information can be found in the IAR Assembler Reference Guide, Section control directives.

Conclusion

In most cases, adding :NOROOT to the SECTION control directive is a good way to remove the deprecated construct and avoid the warning message: 

      PUBWEAK NMI_Handler 
      SECTION .text:CODE:REORDER:NOROOT(1)
NMI_Handler 

 

All product names are trademarks or registered trademarks of their respective owners.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章