基于创建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
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.