ワーニング: Label 'xxxxx' is defined pubweak in a section implicitly declared root の対処

テクニカル・ノート 30605

アーキテクチャ:

ARM, STM8

コンポーネント:

assembler

更新日:

2018/09/04 7:26

はじめに

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
 

解説

IARアセンブラは、廃止予定のアセンブラ構造に対して、表記のようなメッセージを表示します。 対象となるのは、ディレクティブ PUBWEAKの使用と暗黙の:ROOTフラグが一致しない構造です。

例として、次のようなアセンブラ記述を考えます:

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

この例の場合、および多くケースで、 :NOROOT フラグを追加することで不一致が除かれ、ワーニングメッセージが表示されなくなります。

アセンブラ制御ディレクティブSECTIONの構文を以下に示します。

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

アセンブラ制御ディレクティブ SECTION の詳細は、IAR アセンブラ リファレンスガイドの 「セクション制御ディレクティブ」の項目を参照してください。

まとめ

ほとんどの場合、SECTION制御ディレクティブに :NOROOT を追加することで、推奨されない構文が除かれて、ワーニングメッセージは表示されなくなります。

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

 

全ての製品名は、それぞれの所有者の商標または登録商標です

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。