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

Technical Note 30605

Architectures:

ARM, STM8

Component:

assembler

Updated:

11/1/2016 4:04 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.

We do no longer support Internet Explorer. To get the best experience of iar.com, we recommend upgrading to a modern browser such as Chrome or Edge.