7.3.4. Detecting interworking calls

The linker generates an error if it detects a direct ARM-Thumb interworking call where the called routine is not compiled for interworking. You must recompile the called routine for interworking.

For example, Figure 7.4 shows the errors that are produced if the ARM routine in Example 7.2 is compiled without the -apcs /interwork option.

Figure 7.4. Interworking errors


Error: Unsupported call from Thumb code to ARM symbol _printf in thumb.o(C$$code).
Error: Unsupported call from Thumb code to ARM symbol arm_function in thumb.o(C$$code).
Error: Unsupported call from Thumb code to ARM symbol _printf in thumb.o(C$$code).

These types of errors indicate that an ARM-to-Thumb or Thumb-to-ARM interworking call has been detected from the object module object to the routine symbol, but the called routine has not been compiled for interworking. You must recompile the module that contains the symbol and specify -apcs /interwork.

Copyright © 1997, 1998 ARM Limited. All rights reserved.ARM DUI 0040D
Non-Confidential