Keil Logo

Technical Support

On-Line Manuals

Compiler Reference Guide

Preface Arm Compiler Tools Overview armclang Reference armlink Reference 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) Base Platform linking model overview SysV linking model overview Concepts common to both BPABI and SysV linking mod 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 prog Load view and execution view of an image Methods of specifying an image memory map with the Image entry points Restrictions on image structure Simple images Types of simple image Type 1 image structure, one load region and contig Type 2 image structure, one load region and non-co Type 3 image structure, multiple load regions and Section placement with the linker Default section placement Section placement with the FIRST and LAST attribut Section alignment with the linker Linker support for creating demand-paged files Linker reordering of execution regions containing Linker-generated veneers What is a veneer? Veneer sharing Veneer types Generation of position independent to absolute ven Reuse of veneers when scatter-loading Generation of secure gateway veneers Command-line options used to control the generatio Weak references and definitions How the linker performs library searching, selecti How the linker searches for the Arm standard libra 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 algo How compression is applied Considerations when working with RW data compressi 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 section 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 a Methods of importing linker-defined symbols in Arm 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-li Steering file command summary Steering file format Hide and rename global symbols with a steering fil Use of $Super$$ and $Sub$$ to patch symbol definit Scatter-loading Features The scatter-loading mechanism Overview of scatter-loading When to use scatter-loading Linker-defined symbols that are not defined when s 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 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 Placement of unassigned sections Default rules for placing unassigned sections Command-line options for controlling the placement Prioritizing the placement of unassigned sections Specify the maximum region size permitted for plac Examples of using placement algorithms for .ANY se Example of next_fit algorithm showing behavior of Examples of using sorting algorithms for .ANY sect Behavior when .ANY sections overflow because of li Placing veneers with a scatter file Placement of CMSE veneer sections for a Secure ima Reserving an empty block of memory Characteristics of a reserved empty block of memor 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 scatte Equivalent scatter-loading descriptions for simple Command-line options for creating simple images Type 1 image, one load region and contiguous execu Type 2 image, one load region and non-contiguous e Type 3 image, multiple load regions and non-contig How the linker resolves multiple matches when proc How the linker resolves path names when processing Scatter file to ELF mapping Scatter File Syntax BNF notation used in scatter-loading description s 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 attribut Inheritance rules for the RELOC address attribute Considerations when using a relative address +offs Execution region descriptions Components of an execution region description Syntax of an execution region description Execution region attributes Inheritance rules for execution region address att Considerations when using a relative address +offs Input section descriptions Components of an input section description Syntax of an input section description Examples of module and input section specification Expression evaluation in scatter files Expression usage in scatter files Expression rules in scatter files Execution address built-in functions for use in sc ScatterAssert function and load address related fu Symbol related function in a scatter file AlignExpr(expr, align) function GetPageSize() function SizeOfHeaders() function Example of aligning a base address in execution sp Scatter files containing relative base address loa BPABI and SysV Shared Libraries and Executables About the Base Platform Application Binary Interfa Platforms supported by the BPABI Features common to all BPABI models About importing and exporting symbols for BPABI mo 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 l Symbol definitions defined for SysV compatibility Addressing modes in the SysV linking model Thread local storage in the SysV linking model Linker command-line options for the SysV linking m 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 Mandatory symbol versioning in the BPABI DLL-like Automatic dynamic symbol table rules in the BPABI 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 versio Features of the Base Platform Linking Model Restrictions on the use of scatter files with the Scatter files for the Base Platform linking model Placement of PLT sequences with the Base Platform 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 fromelf Reference armar Reference armasm Legacy Assembler Reference Appendixes

armlink Reference

Part C armlink Reference

Table of Contents

C1 armlink Command-line Options
C1.1 --any_contingency
C1.2 --any_placement=algorithm
C1.3 --any_sort_order=order
C1.4 --api, --no_api
C1.5 --autoat, --no_autoat
C1.6 --bare_metal_pie
C1.7 --base_platform
C1.8 --bestdebug, --no_bestdebug
C1.9 --blx_arm_thumb, --no_blx_arm_thumb
C1.10 --blx_thumb_arm, --no_blx_thumb_arm
C1.11 --bpabi
C1.12 --branchnop, --no_branchnop
C1.13 --callgraph, --no_callgraph
C1.14 --callgraph_file=filename
C1.15 --callgraph_output=fmt
C1.16 --callgraph_subset=symbol[,symbol,...]
C1.17 --cgfile=type
C1.18 --cgsymbol=type
C1.19 --cgundefined=type
C1.20 --comment_section, --no_comment_section
C1.21 --cppinit, --no_cppinit
C1.22 --cpu=list (armlink)
C1.23 --cpu=name (armlink)
C1.24 --crosser_veneershare, --no_crosser_veneershare
C1.25 --datacompressor=opt
C1.26 --debug, --no_debug
C1.27 --diag_error=tag[,tag,…] (armlink)
C1.28 --diag_remark=tag[,tag,…] (armlink)
C1.29 --diag_style={arm|ide|gnu} (armlink)
C1.30 --diag_suppress=tag[,tag,…] (armlink)
C1.31 --diag_warning=tag[,tag,…] (armlink)
C1.32 --dll
C1.33 --dynamic_linker=name
C1.34 --eager_load_debug, --no_eager_load_debug
C1.35 --eh_frame_hdr
C1.36 --edit=file_list
C1.37 --emit_debug_overlay_relocs
C1.38 --emit_debug_overlay_section
C1.39 --emit_non_debug_relocs
C1.40 --emit_relocs
C1.41 --entry=location
C1.42 --errors=filename
C1.43 --exceptions, --no_exceptions
C1.44 --export_all, --no_export_all
C1.45 --export_dynamic, --no_export_dynamic
C1.46 --filtercomment, --no_filtercomment
C1.47 --fini=symbol
C1.48 --first=section_id
C1.49 --force_explicit_attr
C1.50 --force_so_throw, --no_force_so_throw
C1.51 --fpic
C1.52 --fpu=list (armlink)
C1.53 --fpu=name (armlink)
C1.54 --got=type
C1.55 --gnu_linker_defined_syms
C1.56 --help (armlink)
C1.57 --import_cmse_lib_in=filename
C1.58 --import_cmse_lib_out=filename
C1.59 --import_unresolved, --no_import_unresolved
C1.60 --info=topic[,topic,…] (armlink)
C1.61 --info_lib_prefix=opt
C1.62 --init=symbol
C1.63 --inline, --no_inline
C1.64 --inline_type=type
C1.65 --inlineveneer, --no_inlineveneer
C1.66 input-file-list (armlink)
C1.67 --keep=section_id (armlink)
C1.68 --keep_intermediate
C1.69 --largeregions, --no_largeregions
C1.70 --last=section_id
C1.71 --legacyalign, --no_legacyalign
C1.72 --libpath=pathlist
C1.73 --library=name
C1.74 --library_security=protection
C1.75 --library_type=lib
C1.76 --list=filename
C1.77 --list_mapping_symbols, --no_list_mapping_symbols
C1.78 --load_addr_map_info, --no_load_addr_map_info
C1.79 --locals, --no_locals
C1.80 --lto, --no_lto
C1.81 --lto_keep_all_symbols, --no_lto_keep_all_symbols
C1.82 --lto_intermediate_filename
C1.83 --lto_level
C1.84 --lto_relocation_model
C1.85 --mangled, --unmangled
C1.86 --map, --no_map
C1.87 --max_er_extension=size
C1.88 --max_veneer_passes=value
C1.89 --max_visibility=type
C1.90 --merge, --no_merge
C1.91 --merge_litpools, --no_merge_litpools
C1.92 --muldefweak, --no_muldefweak
C1.93 -o filename, --output=filename (armlink)
C1.94 --output_float_abi=option
C1.95 --overlay_veneers
C1.96 --override_visibility
C1.97 -Omax (armlink)
C1.98 --pad=num
C1.99 --paged
C1.100 --pagesize=pagesize
C1.101 --partial
C1.102 --pie
C1.103 --piveneer, --no_piveneer
C1.104 --pixolib
C1.105 --pltgot=type
C1.106 --pltgot_opts=mode
C1.107 --predefine="string"
C1.108 --preinit, --no_preinit
C1.109 --privacy (armlink)
C1.110 --ref_cpp_init, --no_ref_cpp_init
C1.111 --ref_pre_init, --no_ref_pre_init
C1.112 --reloc
C1.113 --remarks
C1.114 --remove, --no_remove
C1.115 --ro_base=address
C1.116 --ropi
C1.117 --rosplit
C1.118 --rw_base=address
C1.119 --rwpi
C1.120 --scanlib, --no_scanlib
C1.121 --scatter=filename
C1.122 --section_index_display=type
C1.123 --shared
C1.124 --show_cmdline (armlink)
C1.125 --show_full_path
C1.126 --show_parent_lib
C1.127 --show_sec_idx
C1.128 --soname=name
C1.129 --sort=algorithm
C1.130 --split
C1.131 --startup=symbol, --no_startup
C1.132 --stdlib
C1.133 --strict
C1.134 --strict_flags, --no_strict_flags
C1.135 --strict_ph, --no_strict_ph
C1.136 --strict_preserve8_require8
C1.137 --strict_relocations, --no_strict_relocations
C1.138 --strict_symbols, --no_strict_symbols
C1.139 --strict_visibility, --no_strict_visibility
C1.140 --symbols, --no_symbols
C1.141 --symdefs=filename
C1.142 --symver_script=filename
C1.143 --symver_soname
C1.144 --sysv
C1.145 --tailreorder, --no_tailreorder
C1.146 --tiebreaker=option
C1.147 --unaligned_access, --no_unaligned_access
C1.148 --undefined=symbol
C1.149 --undefined_and_export=symbol
C1.150 --unresolved=symbol
C1.151 --use_definition_visibility
C1.152 --userlibpath=pathlist
C1.153 --veneerinject, --no_veneerinject
C1.154 --veneer_inject_type=type
C1.155 --veneer_pool_size=size
C1.156 --veneershare, --no_veneershare
C1.157 --verbose
C1.158 --version_number (armlink)
C1.159 --via=filename (armlink)
C1.160 --vsn (armlink)
C1.161 --xo_base=address
C1.162 --xref, --no_xref
C1.163 --xrefdbg, --no_xrefdbg
C1.164 --xref{from|to}=object(section)
C1.165 --zi_base=address
C2 Linking Models Supported by armlink
C2.1 Overview of linking models
C2.2 Bare-metal linking model overview
C2.3 Partial linking model overview
C2.4 Base Platform Application Binary Interface (BPABI) linking model overview
C2.5 Base Platform linking model overview
C2.6 SysV linking model overview
C2.7 Concepts common to both BPABI and SysV linking models
C3 Image Structure and Generation
C3.1 The structure of an Arm® ELF image
C3.1.1 Views of the image at each link stage
C3.1.2 Input sections, output sections, regions, and program segments
C3.1.3 Load view and execution view of an image
C3.1.4 Methods of specifying an image memory map with the linker
C3.1.5 Image entry points
C3.1.6 Restrictions on image structure
C3.2 Simple images
C3.2.1 Types of simple image
C3.2.2 Type 1 image structure, one load region and contiguous execution regions
C3.2.3 Type 2 image structure, one load region and non-contiguous execution regions
C3.2.4 Type 3 image structure, multiple load regions and non-contiguous execution regions
C3.3 Section placement with the linker
C3.3.1 Default section placement
C3.3.2 Section placement with the FIRST and LAST attributes
C3.3.3 Section alignment with the linker
C3.4 Linker support for creating demand-paged files
C3.5 Linker reordering of execution regions containing T32 code
C3.6 Linker-generated veneers
C3.6.1 What is a veneer?
C3.6.2 Veneer sharing
C3.6.3 Veneer types
C3.6.4 Generation of position independent to absolute veneers
C3.6.5 Reuse of veneers when scatter-loading
C3.6.6 Generation of secure gateway veneers
C3.7 Command-line options used to control the generation of C++ exception tables
C3.8 Weak references and definitions
C3.9 How the linker performs library searching, selection, and scanning
C3.10 How the linker searches for the Arm® standard libraries
C3.11 Specifying user libraries when linking
C3.12 How the linker resolves references
C3.13 The strict family of linker options
C4 Linker Optimization Features
C4.1 Elimination of common section groups
C4.2 Elimination of unused sections
C4.3 Optimization with RW data compression
C4.3.1 How the linker chooses a compressor
C4.3.2 Options available to override the compression algorithm used by the linker
C4.3.3 How compression is applied
C4.3.4 Considerations when working with RW data compression
C4.4 Function inlining with the linker
C4.5 Factors that influence function inlining
C4.6 About branches that optimize to a NOP
C4.7 Linker reordering of tail calling sections
C4.8 Restrictions on reordering of tail calling sections
C4.9 Linker merging of comment sections
C4.10 Merging identical constants
C5 Accessing and Managing Symbols with armlink
C5.1 About mapping symbols
C5.2 Linker-defined symbols
C5.3 Region-related symbols
C5.3.1 Types of region-related symbols
C5.3.2 Image$$ execution region symbols
C5.3.3 Load$$ execution region symbols
C5.3.4 Load$$LR$$ load region symbols
C5.3.5 Region name values when not scatter-loading
C5.3.6 Linker defined symbols and scatter files
C5.3.7 Methods of importing linker-defined symbols in C and C++
C5.3.8 Methods of importing linker-defined symbols in Arm® assembly language
C5.4 Section-related symbols
C5.4.1 Types of section-related symbols
C5.4.2 Image symbols
C5.4.3 Input section symbols
C5.5 Access symbols in another image
C5.5.1 Creating a symdefs file
C5.5.2 Outputting a subset of the global symbols
C5.5.3 Reading a symdefs file
C5.5.4 Symdefs file format
C5.6 Edit the symbol tables with a steering file
C5.6.1 Specifying steering files on the linker command-line
C5.6.2 Steering file command summary
C5.6.3 Steering file format
C5.6.4 Hide and rename global symbols with a steering file
C5.7 Use of $Super$$ and $Sub$$ to patch symbol definitions
C6 Scatter-loading Features
C6.1 The scatter-loading mechanism
C6.1.1 Overview of scatter-loading
C6.1.2 When to use scatter-loading
C6.1.3 Linker-defined symbols that are not defined when scatter-loading
C6.1.4 Placing the stack and heap with a scatter file
C6.1.5 Scatter-loading command-line options
C6.1.6 Scatter-loading images with a simple memory map
C6.1.7 Scatter-loading images with a complex memory map
C6.2 Root region and the initial entry point
C6.2.1 Effect of the ABSOLUTE attribute on a root region
C6.2.2 Effect of the FIXED attribute on a root region
C6.2.3 Methods of placing functions and data at specific addresses
C6.2.4 Placing functions and data in a named section
C6.2.5 Placing __at sections at a specific address
C6.2.6 Restrictions on placing __at sections
C6.2.7 Automatically placing __at sections
C6.2.8 Manually placing __at sections
C6.2.9 Placing a key in flash memory with an __at section
C6.3 Example of how to explicitly place a named section with scatter-loading
C6.4 Placement of unassigned sections
C6.4.1 Default rules for placing unassigned sections
C6.4.2 Command-line options for controlling the placement of unassigned sections
C6.4.3 Prioritizing the placement of unassigned sections
C6.4.4 Specify the maximum region size permitted for placing unassigned sections
C6.4.5 Examples of using placement algorithms for .ANY sections
C6.4.6 Example of next_fit algorithm showing behavior of full regions, selectors, and priority
C6.4.7 Examples of using sorting algorithms for .ANY sections
C6.4.8 Behavior when .ANY sections overflow because of linker-generated content
C6.5 Placing veneers with a scatter file
C6.6 Placement of CMSE veneer sections for a Secure image
C6.7 Reserving an empty block of memory
C6.7.1 Characteristics of a reserved empty block of memory
C6.7.2 Example of reserving an empty block of memory
C6.8 Placement of Arm® C and C++ library code
C6.8.1 Placing code in a root region
C6.8.2 Placing Arm® C library code
C6.8.3 Placing Arm® C++ library code
C6.9 Aligning regions to page boundaries
C6.10 Aligning execution regions and input sections
C6.11 Preprocessing a scatter file
C6.11.1 Default behavior for armclang -E in a scatter file
C6.11.2 Using other preprocessors in a scatter file
C6.12 Example of using expression evaluation in a scatter file to avoid padding
C6.13 Equivalent scatter-loading descriptions for simple images
C6.13.1 Command-line options for creating simple images
C6.13.2 Type 1 image, one load region and contiguous execution regions
C6.13.3 Type 2 image, one load region and non-contiguous execution regions
C6.13.4 Type 3 image, multiple load regions and non-contiguous execution regions
C6.14 How the linker resolves multiple matches when processing scatter files
C6.15 How the linker resolves path names when processing scatter files
C6.16 Scatter file to ELF mapping
C7 Scatter File Syntax
C7.1 BNF notation used in scatter-loading description syntax
C7.2 Syntax of a scatter file
C7.3 Load region descriptions
C7.3.1 Components of a load region description
C7.3.2 Syntax of a load region description
C7.3.3 Load region attributes
C7.3.4 Inheritance rules for load region address attributes
C7.3.5 Inheritance rules for the RELOC address attribute
C7.3.6 Considerations when using a relative address +offset for a load region
C7.4 Execution region descriptions
C7.4.1 Components of an execution region description
C7.4.2 Syntax of an execution region description
C7.4.3 Execution region attributes
C7.4.4 Inheritance rules for execution region address attributes
C7.4.5 Considerations when using a relative address +offset for execution regions
C7.5 Input section descriptions
C7.5.1 Components of an input section description
C7.5.2 Syntax of an input section description
C7.5.3 Examples of module and input section specifications
C7.6 Expression evaluation in scatter files
C7.6.1 Expression usage in scatter files
C7.6.2 Expression rules in scatter files
C7.6.3 Execution address built-in functions for use in scatter files
C7.6.4 ScatterAssert function and load address related functions
C7.6.5 Symbol related function in a scatter file
C7.6.6 AlignExpr(expr, align) function
C7.6.7 GetPageSize() function
C7.6.8 SizeOfHeaders() function
C7.6.9 Example of aligning a base address in execution space but still tightly packed in load space
C7.6.10 Scatter files containing relative base address load regions and a ZI execution region
C8 BPABI and SysV Shared Libraries and Executables
C8.1 About the Base Platform Application Binary Interface (BPABI)
C8.2 Platforms supported by the BPABI
C8.3 Features common to all BPABI models
C8.3.1 About importing and exporting symbols for BPABI models
C8.3.2 Symbol visibility for BPABI models
C8.3.3 Automatic import and export for BPABI models
C8.3.4 Manual import and export for BPABI models
C8.3.5 Symbol versioning for BPABI models
C8.3.6 RW compression for BPABI models
C8.4 SysV linking model
C8.4.1 SysV standard memory model
C8.4.2 Using the C and C++ libraries
C8.4.3 Using a dynamic Linker
C8.4.4 Automatic dynamic symbol table rules in the SysV linking model
C8.4.5 Symbol definitions defined for SysV compatibility with glibc
C8.4.6 Addressing modes in the SysV linking model
C8.4.7 Thread local storage in the SysV linking model
C8.4.8 Linker command-line options for the SysV linking model
C8.5 Bare metal and DLL-like memory models
C8.5.1 BPABI standard memory model
C8.5.2 Customization of the BPABI standard memory model
C8.5.3 Linker command-line options for bare metal and DLL-like models
C8.5.4 Mandatory symbol versioning in the BPABI DLL-like model
C8.5.5 Automatic dynamic symbol table rules in the BPABI DLL-like model
C8.5.6 Addressing modes in the BPABI DLL-like model
C8.5.7 C++ initialization in the BPABI DLL-like model
C8.6 Symbol versioning
C8.6.1 Overview of symbol versioning
C8.6.2 Embedded symbols
C8.6.3 The symbol versioning script file
C8.6.4 Example of creating versioned symbols
C8.6.5 Linker options for enabling implicit symbol versioning
C9 Features of the Base Platform Linking Model
C9.1 Restrictions on the use of scatter files with the Base Platform model
C9.2 Scatter files for the Base Platform linking model
C9.3 Placement of PLT sequences with the Base Platform model
C10 Linker Steering File Command Reference
C10.1 EXPORT steering file command
C10.2 HIDE steering file command
C10.3 IMPORT steering file command
C10.4 RENAME steering file command
C10.5 REQUIRE steering file command
C10.6 RESOLVE steering file command
C10.7 SHOW steering file command
Non-ConfidentialPDF file icon PDF version101754_0613_00_en
Copyright © 2019 Arm Limited or its affiliates. All rights reserved. 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.