You copied the Doc URL to your clipboard.

armlink Reference

Table of Contents

armlink Command-line Options
--any_contingency
--any_placement=algorithm
--any_sort_order=order
--api, --no_api
--autoat, --no_autoat
--bare_metal_pie
--base_platform
--bestdebug, --no_bestdebug
--blx_arm_thumb, --no_blx_arm_thumb
--blx_thumb_arm, --no_blx_thumb_arm
--bpabi
--branchnop, --no_branchnop
--callgraph, --no_callgraph
--callgraph_file=filename
--callgraph_output=fmt
--callgraph_subset=symbol[,symbol,...]
--cgfile=type
--cgsymbol=type
--cgundefined=type
--comment_section, --no_comment_section
--cppinit, --no_cppinit
--cpu=list (armlink)
--cpu=name (armlink)
--crosser_veneershare, --no_crosser_veneershare
--datacompressor=opt
--debug, --no_debug
--diag_error=tag[,tag,…] (armlink)
--diag_remark=tag[,tag,…] (armlink)
--diag_style={arm|ide|gnu} (armlink)
--diag_suppress=tag[,tag,…] (armlink)
--diag_warning=tag[,tag,…] (armlink)
--dll
--dynamic_linker=name
--eager_load_debug, --no_eager_load_debug
--eh_frame_hdr
--edit=file_list
--emit_debug_overlay_relocs
--emit_debug_overlay_section
--emit_non_debug_relocs
--emit_relocs
--entry=location
--errors=filename
--exceptions, --no_exceptions
--export_all, --no_export_all
--export_dynamic, --no_export_dynamic
--filtercomment, --no_filtercomment
--fini=symbol
--first=section_id
--force_explicit_attr
--force_so_throw, --no_force_so_throw
--fpic
--fpu=list (armlink)
--fpu=name (armlink)
--got=type
--gnu_linker_defined_syms
--help (armlink)
--import_cmse_lib_in=filename
--import_cmse_lib_out=filename
--import_unresolved, --no_import_unresolved
--info=topic[,topic,…] (armlink)
--info_lib_prefix=opt
--init=symbol
--inline, --no_inline
--inline_type=type
--inlineveneer, --no_inlineveneer
input-file-list (armlink)
--keep=section_id (armlink)
--keep_intermediate
--largeregions, --no_largeregions
--last=section_id
--legacyalign, --no_legacyalign
--libpath=pathlist
--library=name
--library_security=protection
--library_type=lib
--list=filename
--list_mapping_symbols, --no_list_mapping_symbols
--load_addr_map_info, --no_load_addr_map_info
--locals, --no_locals
--lto, --no_lto
--lto_keep_all_symbols, --no_lto_keep_all_symbols
--lto_intermediate_filename
--lto_level
--lto_relocation_model
--mangled, --unmangled
--map, --no_map
--max_er_extension=size
--max_veneer_passes=value
--max_visibility=type
--merge, --no_merge
--merge_litpools, --no_merge_litpools
--muldefweak, --no_muldefweak
-o filename, --output=filename (armlink)
--output_float_abi=option
--overlay_veneers
--override_visibility
-Omax (armlink)
--pad=num
--paged
--pagesize=pagesize
--partial
--pie
--piveneer, --no_piveneer
--pixolib
--pltgot=type
--pltgot_opts=mode
--predefine="string"
--preinit, --no_preinit
--privacy (armlink)
--ref_cpp_init, --no_ref_cpp_init
--ref_pre_init, --no_ref_pre_init
--reloc
--remarks
--remove, --no_remove
--ro_base=address
--ropi
--rosplit
--rw_base=address
--rwpi
--scanlib, --no_scanlib
--scatter=filename
--section_index_display=type
--shared
--show_cmdline (armlink)
--show_full_path
--show_parent_lib
--show_sec_idx
--soname=name
--sort=algorithm
--split
--startup=symbol, --no_startup
--stdlib
--strict
--strict_flags, --no_strict_flags
--strict_ph, --no_strict_ph
--strict_preserve8_require8
--strict_relocations, --no_strict_relocations
--strict_symbols, --no_strict_symbols
--strict_visibility, --no_strict_visibility
--symbols, --no_symbols
--symdefs=filename
--symver_script=filename
--symver_soname
--sysv
--tailreorder, --no_tailreorder
--tiebreaker=option
--unaligned_access, --no_unaligned_access
--undefined=symbol
--undefined_and_export=symbol
--unresolved=symbol
--use_definition_visibility
--userlibpath=pathlist
--veneerinject, --no_veneerinject
--veneer_inject_type=type
--veneer_pool_size=size
--veneershare, --no_veneershare
--verbose
--version_number (armlink)
--via=filename (armlink)
--vsn (armlink)
--xo_base=address
--xref, --no_xref
--xrefdbg, --no_xrefdbg
--xref{from|to}=object(section)
--zi_base=address
Linking Models Supported by armlink
Overview of linking models
Bare-metal linking model overview
Partial linking model overview
Base Platform Application Binary Interface (BPABI) linking model overview
Base Platform linking model overview
SysV linking model overview
Concepts common to both BPABI and SysV linking models
Image Structure and Generation
The structure of an Arm® ELF image
Views of the image at each link stage
Input sections, output sections, regions, and program segments
Load view and execution view of an image
Methods of specifying an image memory map with the linker
Image entry points
Restrictions on image structure
Simple images
Types of simple image
Type 1 image structure, one load region and contiguous execution regions
Type 2 image structure, one load region and non-contiguous execution regions
Type 3 image structure, multiple load regions and non-contiguous execution regions
Section placement with the linker
Default section placement
Section placement with the FIRST and LAST attributes
Section alignment with the linker
Linker support for creating demand-paged files
Linker reordering of execution regions containing T32 code
Linker-generated veneers
What is a veneer?
Veneer sharing
Veneer types
Generation of position independent to absolute veneers
Reuse of veneers when scatter-loading
Generation of secure gateway veneers
Command-line options used to control the generation of C++ exception tables
Weak references and definitions
How the linker performs library searching, selection, and scanning
How the linker searches for the Arm® standard libraries
Specifying user libraries when linking
How the linker resolves references
The strict family of linker options
Linker Optimization Features
Elimination of common section groups
Elimination of unused sections
Optimization with RW data compression
How the linker chooses a compressor
Options available to override the compression algorithm used by the linker
How compression is applied
Considerations when working with RW data compression
Function inlining with the linker
Factors that influence function inlining
About branches that optimize to a NOP
Linker reordering of tail calling sections
Restrictions on reordering of tail calling sections
Linker merging of comment sections
Merging identical constants
Accessing and Managing Symbols with armlink
About mapping symbols
Linker-defined symbols
Region-related symbols
Types of region-related symbols
Image$$ execution region symbols
Load$$ execution region symbols
Load$$LR$$ load region symbols
Region name values when not scatter-loading
Linker defined symbols and scatter files
Methods of importing linker-defined symbols in C and C++
Methods of importing linker-defined symbols in Arm® assembly language
Section-related symbols
Types of section-related symbols
Image symbols
Input section symbols
Access symbols in another image
Creating a symdefs file
Outputting a subset of the global symbols
Reading a symdefs file
Symdefs file format
Edit the symbol tables with a steering file
Specifying steering files on the linker command-line
Steering file command summary
Steering file format
Hide and rename global symbols with a steering file
Use of $Super$$ and $Sub$$ to patch symbol definitions
Scatter-loading Features
The scatter-loading mechanism
Overview of scatter-loading
When to use scatter-loading
Linker-defined symbols that are not defined when scatter-loading
Placing the stack and heap with a scatter file
Scatter-loading command-line options
Scatter-loading images with a simple memory map
Scatter-loading images with a complex memory map
Root region and the initial entry point
Effect of the ABSOLUTE attribute on a root region
Effect of the FIXED attribute on a root region
Methods of placing functions and data at specific addresses
Placing functions and data in a named section
Placing __at sections at a specific address
Restrictions on placing __at sections
Automatically placing __at sections
Manually placing __at sections
Placing a key in flash memory with an __at section
Example of how to explicitly place a named section with scatter-loading
Placement of unassigned sections
Default rules for placing unassigned sections
Command-line options for controlling the placement of unassigned sections
Prioritizing the placement of unassigned sections
Specify the maximum region size permitted for placing unassigned sections
Examples of using placement algorithms for .ANY sections
Example of next_fit algorithm showing behavior of full regions, selectors, and priority
Examples of using sorting algorithms for .ANY sections
Behavior when .ANY sections overflow because of linker-generated content
Placing veneers with a scatter file
Placement of CMSE veneer sections for a Secure image
Reserving an empty block of memory
Characteristics of a reserved empty block of memory
Example of reserving an empty block of memory
Placement of Arm® C and C++ library code
Placing code in a root region
Placing Arm® C library code
Placing Arm® C++ library code
Aligning regions to page boundaries
Aligning execution regions and input sections
Preprocessing a scatter file
Default behavior for armclang -E in a scatter file
Using other preprocessors in a scatter file
Example of using expression evaluation in a scatter file to avoid padding
Equivalent scatter-loading descriptions for simple images
Command-line options for creating simple images
Type 1 image, one load region and contiguous execution regions
Type 2 image, one load region and non-contiguous execution regions
Type 3 image, multiple load regions and non-contiguous execution regions
How the linker resolves multiple matches when processing scatter files
How the linker resolves path names when processing scatter files
Scatter file to ELF mapping
Scatter File Syntax
BNF notation used in scatter-loading description syntax
Syntax of a scatter file
Load region descriptions
Components of a load region description
Syntax of a load region description
Load region attributes
Inheritance rules for load region address attributes
Inheritance rules for the RELOC address attribute
Considerations when using a relative address +offset for a load region
Execution region descriptions
Components of an execution region description
Syntax of an execution region description
Execution region attributes
Inheritance rules for execution region address attributes
Considerations when using a relative address +offset for execution regions
Input section descriptions
Components of an input section description
Syntax of an input section description
Examples of module and input section specifications
Expression evaluation in scatter files
Expression usage in scatter files
Expression rules in scatter files
Execution address built-in functions for use in scatter files
ScatterAssert function and load address related functions
Symbol related function in a scatter file
AlignExpr(expr, align) function
GetPageSize() function
SizeOfHeaders() function
Example of aligning a base address in execution space but still tightly packed in load space
Scatter files containing relative base address load regions and a ZI execution region
BPABI and SysV Shared Libraries and Executables
About the Base Platform Application Binary Interface (BPABI)
Platforms supported by the BPABI
Features common to all BPABI models
About importing and exporting symbols for BPABI models
Symbol visibility for BPABI models
Automatic import and export for BPABI models
Manual import and export for BPABI models
Symbol versioning for BPABI models
RW compression for BPABI models
SysV linking model
SysV standard memory model
Using the C and C++ libraries
Using a dynamic Linker
Automatic dynamic symbol table rules in the SysV linking model
Symbol definitions defined for SysV compatibility with glibc
Addressing modes in the SysV linking model
Thread local storage in the SysV linking model
Linker command-line options for the SysV linking model
Bare metal and DLL-like memory models
BPABI standard memory model
Customization of the BPABI standard memory model
Linker command-line options for bare metal and DLL-like models
Mandatory symbol versioning in the BPABI DLL-like model
Automatic dynamic symbol table rules in the BPABI DLL-like model
Addressing modes in the BPABI DLL-like model
C++ initialization in the BPABI DLL-like model
Symbol versioning
Overview of symbol versioning
Embedded symbols
The symbol versioning script file
Example of creating versioned symbols
Linker options for enabling implicit symbol versioning
Features of the Base Platform Linking Model
Restrictions on the use of scatter files with the Base Platform model
Scatter files for the Base Platform linking model
Placement of PLT sequences with the Base Platform model
Linker Steering File Command Reference
EXPORT steering file command
HIDE steering file command
IMPORT steering file command
RENAME steering file command
REQUIRE steering file command
RESOLVE steering file command
SHOW steering file command