4.1.4. インターワーク呼び出しの検出

リンカでは、直接的な ARM/Thumb インターワーク呼び出しを検出したときに、被発呼側のルーチンがインターワーク用にビルドされていないとエラーを生成します。この場合、呼び出される側のルーチンをインターワーク用に再ビルドする必要があります。

Example 4.3 の ARM ルーチンを、--apcs /interwork オプションを指定せずにコンパイルおよびリンクした場合、Example 4.1 に示すエラーが生成されます。

Example 4.1. 

Error:L6239E: Cannot call ARM symbol 'arm_function' in non-interworking object
armsub.o from THUMB code in thumbmain.o(.text)

このようなエラーは、ARM から Thumb、または Thumb から ARM へのインターワーク呼び出しが、そのルーチンのシンボルとは異なるオブジェクトモジュールから検出されたにも関わらず、呼び出される側のルーチンがインターワーク用にコンパイルされていないことを示します。この場合は、--apcs /interwork を指定して、このシンボルを含むモジュールを再コンパイルする必要があります。

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential