6.8.10. IMPORT

The IMPORT directive provides the assembler with a name that is not defined in the current assembly.

IMPORT is very similar to EXTERN, except that the name is imported whether or not it is referred to in the current assembly (see EXTERN, and EXPORT or GLOBAL).

Syntax

IMPORT symbol {[WEAK,attr]}

where:

symbol

is a symbol name defined in a separately assembled source file, object file, or library. The symbol name is case-sensitive.

[WEAK]

prevents the linker generating an error message if the symbol is not defined elsewhere. It also prevents the linker searching libraries that are not already included.

[attr]

is symbol visibility when linked into a dynamic component. By default, symbol binding defines visibility, that is, global and weak symbols are visible to other components and local symbols are not hidden.

Valid attributes are:

DYNAMIC

symbol is visible to other components, and can be redefined by other components.

HIDDEN

symbol cannot be referenced outside the component where it is defined, either directly or indirectly.

The linker also accepts INTERNAL and currently treats it as HIDDEN. If you specify both, for example:

IMPORT SymA[WEAK,INTERNAL,HIDDEN]

the assembler chooses the most restrictive (INTERNAL).

PROTECTED

symbol is visible to other components, and cannot be redefined by other components.

Usage

The name is resolved at link time to a symbol defined in a separate object file. The symbol is treated as a program address. If [WEAK] is not specified, the linker generates an error if no corresponding symbol is found at link time.

If [WEAK] is specified and no corresponding symbol is found at link time:

  • If the reference is the destination of a B or BL instruction, the value of the symbol is taken as the address of the following instruction. This makes the B or BL instruction effectively a NOP.

  • Otherwise, the value of the symbol is taken as zero.

To avoid trying to access symbols that are not found at link time, use code like the example in EXTERN.

Copyright © 2002-2005 ARM Limited. All rights reserved.ARM DUI 0204F
Non-Confidential