Label 'xxxxx' is defined pubweak in a section implicitly declared root

Technical Note 30605

Targets:
ARM, STM8

Component:
Assembler

Updated:
1/12/2015 3:02 PM

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' is defined 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.

Related Tech Notes

© IAR Systems 1995-2016 - All rights reserved.