ワーニング: 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
全ての製品名は、それぞれの所有者の商標または登録商標です