ARM® Compiler V5.06 For µVision® Armlink User Guide DUI0377G 02 Mdk
User Manual:
Open the PDF directly: View PDF
Page Count: 356 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- ARM® Compiler v5.06 for µVision® armlink User Guide
- Contents
- List of Figures
- List of Tables
- Preface
- 1 : Overview of the Linker
- 2 : Linking Models Supported by armlink
- 3 : Image Structure and Generation
- 3.1 : The structure of an ARM ELF image
- 3.2 : Simple images
- 3.3 : Section placement with the linker
- 3.4 : Linker support for creating demand-paged files
- 3.5 : Linker reordering of execution regions containing T32 code
- 3.6 : Linker-generated veneers
- 3.7 : Command-line options used to control the generation of C++ exception tables
- 3.8 : Weak references and definitions
- 3.9 : How the linker performs library searching, selection, and scanning
- 3.10 : How the linker searches for the ARM standard libraries
- 3.11 : Specifying user libraries when linking
- 3.12 : How the linker resolves references
- 3.13 : The strict family of linker options
- 4 : Linker Optimization Features
- 4.1 : Elimination of common debug sections
- 4.2 : Elimination of common groups or sections
- 4.3 : Elimination of unused sections
- 4.4 : Elimination of unused virtual functions
- 4.5 : About linker feedback
- 4.6 : Example of using linker feedback
- 4.7 : Optimization with RW data compression
- 4.8 : Function inlining with the linker
- 4.9 : Factors that influence function inlining
- 4.10 : About branches that optimize to a NOP
- 4.11 : Linker reordering of tail calling sections
- 4.12 : Restrictions on reordering of tail calling sections
- 4.13 : Linker merging of comment sections
- 5 : Getting Image Details
- 6 : Accessing and Managing Symbols with armlink
- 6.1 : About mapping symbols
- 6.2 : Linker-defined symbols
- 6.3 : Region-related symbols
- 6.3.1 : Types of region-related symbols
- 6.3.2 : Image$$ execution region symbols
- 6.3.3 : Load$$ execution region symbols
- 6.3.4 : Load$$LR$$ load region symbols
- 6.3.5 : Region name values when not scatter-loading
- 6.3.6 : Linker defined symbols and scatter files
- 6.3.7 : Methods of importing linker-defined symbols in C and C++
- 6.3.8 : Methods of importing linker-defined symbols in ARM® assembly language
- 6.4 : Section-related symbols
- 6.5 : Access symbols in another image
- 6.6 : Edit the symbol tables with a steering file
- 6.7 : Use of $Super$$ and $Sub$$ to patch symbol definitions
- 7 : Scatter-loading Features
- 7.1 : The scatter-loading mechanism
- 7.1.1 : Overview of scatter-loading
- 7.1.2 : When to use scatter-loading
- 7.1.3 : Linker-defined symbols that are not defined when scatter-loading
- 7.1.4 : Specifying stack and heap using the scatter file
- 7.1.5 : Scatter-loading command-line options
- 7.1.6 : Scatter-loading images with a simple memory map
- 7.1.7 : Scatter-loading images with a complex memory map
- 7.1.8 : Scatter file with link to bit-band objects
- 7.2 : Root execution regions
- 7.2.1 : Root execution region and the initial entry point
- 7.2.2 : Root execution regions and the ABSOLUTE attribute
- 7.2.3 : Root execution regions and the FIXED attribute
- 7.2.4 : Methods of placing functions and data at specific addresses
- 7.2.5 : Placement of code and data with __attribute__((section("name")))
- 7.2.6 : Placement of __at sections at a specific address
- 7.2.7 : Restrictions on placing __at sections
- 7.2.8 : Automatic placement of __at sections
- 7.2.9 : Manual placement of __at sections
- 7.2.10 : Placement of a key in flash memory with an __at section
- 7.2.11 : Mapping a structure over a peripheral register with an __at section
- 7.3 : Example of how to explicitly place a named section with scatter-loading
- 7.4 : Placement of unassigned sections with the .ANY module selector
- 7.4.1 : Placement rules when using multiple .ANY selectors
- 7.4.2 : Command-line options for controlling the placement of input sections for multiple .ANY selectors
- 7.4.3 : Prioritization of .ANY sections
- 7.4.4 : Specify the maximum region size permitted for placing unassigned sections
- 7.4.5 : Examples of using placement algorithms for .ANY sections
- 7.4.6 : Example of next_fit algorithm showing behavior of full regions, selectors, and priority
- 7.4.7 : Examples of using sorting algorithms for .ANY sections
- 7.4.8 : Behavior when .ANY sections overflow because of linker-generated content
- 7.5 : Placement of veneer input sections in a scatter file
- 7.6 : Placement of sections with overlays
- 7.7 : Reserving an empty region
- 7.8 : Placement of ARM C and C++ library code
- 7.9 : Creation of regions on page boundaries
- 7.10 : Overalignment of execution regions and input sections
- 7.11 : Preprocessing of a scatter file
- 7.12 : Example of using expression evaluation in a scatter file to avoid padding
- 7.13 : Equivalent scatter-loading descriptions for simple images
- 7.14 : How the linker resolves multiple matches when processing scatter files
- 7.15 : How the linker resolves path names when processing scatter files
- 7.16 : Scatter file to ELF mapping
- 7.1 : The scatter-loading mechanism
- 8 : Scatter File Syntax
- 8.1 : BNF notation used in scatter-loading description syntax
- 8.2 : Syntax of a scatter file
- 8.3 : Load region descriptions
- 8.3.1 : Components of a load region description
- 8.3.2 : Syntax of a load region description
- 8.3.3 : Load region attributes
- 8.3.4 : Inheritance rules for load region address attributes
- 8.3.5 : Inheritance rules for the RELOC address attribute
- 8.3.6 : Considerations when using a relative address +offset for a load region
- 8.4 : Execution region descriptions
- 8.5 : Input section descriptions
- 8.6 : Expression evaluation in scatter files
- 8.6.1 : Methods of specifying numeric constants for expression evaluation
- 8.6.2 : Available operators for expression evaluation
- 8.6.3 : Expression usage in scatter files
- 8.6.4 : Expression rules in scatter files
- 8.6.5 : Execution address built-in functions for use in scatter files
- 8.6.6 : ScatterAssert function and load address related functions
- 8.6.7 : Symbol related function in a scatter file
- 8.6.8 : AlignExpr(expr, align) function
- 8.6.9 : GetPageSize() function
- 8.6.10 : SizeOfHeaders() function
- 8.6.11 : Example of aligning a base address in execution space but still tightly packed in load space
- 8.7 : Scatter files containing relative base address load regions and a ZI execution region
- 9 : Linker Command-line Options
- 9.1 : --any_contingency
- 9.2 : --any_placement=algorithm
- 9.3 : --any_sort_order=order
- 9.4 : --api, --no_api
- 9.5 : --arm_only
- 9.6 : --autoat, --no_autoat
- 9.7 : --be8
- 9.8 : --be32
- 9.9 : --bestdebug, --no_bestdebug
- 9.10 : --blx_arm_thumb, --no_blx_arm_thumb
- 9.11 : --blx_thumb_arm, --no_blx_thumb_arm
- 9.12 : --branchnop, --no_branchnop
- 9.13 : --callgraph, --no_callgraph
- 9.14 : --callgraph_file=filename
- 9.15 : --callgraph_output=fmt
- 9.16 : --callgraph_subset=symbol[,symbol,...]
- 9.17 : --cgfile=type
- 9.18 : --cgsymbol=type
- 9.19 : --cgundefined=type
- 9.20 : --combreloc, --no_combreloc
- 9.21 : --comment_section, --no_comment_section
- 9.22 : --compress_debug, --no_compress_debug
- 9.23 : --cpp_compat linker option
- 9.24 : --cppinit, --no_cppinit
- 9.25 : --cpu=list
- 9.26 : --cpu=name
- 9.27 : --crosser_veneershare, --no_crosser_veneershare
- 9.28 : --datacompressor=opt
- 9.29 : --debug, --no_debug
- 9.30 : --diag_error=tag[,tag,…]
- 9.31 : --diag_remark=tag[,tag,…]
- 9.32 : --diag_style=arm|ide|gnu
- 9.33 : --diag_suppress=tag[,tag,…]
- 9.34 : --diag_warning=tag[,tag,…]
- 9.35 : --eager_load_debug, --no_eager_load_debug
- 9.36 : --edit=file_list
- 9.37 : --emit_debug_overlay_relocs
- 9.38 : --emit_debug_overlay_section
- 9.39 : --emit_non_debug_relocs
- 9.40 : --emit_relocs
- 9.41 : --entry=location
- 9.42 : --errors=filename
- 9.43 : --exceptions, --no_exceptions
- 9.44 : --feedback=filename
- 9.45 : --feedback_image=option
- 9.46 : --feedback_type=type
- 9.47 : --filtercomment, --no_filtercomment
- 9.48 : --fini=symbol
- 9.49 : --first=section_id
- 9.50 : --force_explicit_attr
- 9.51 : --fpu=list
- 9.52 : --fpu=name
- 9.53 : --help
- 9.54 : --info=topic[,topic,…]
- 9.55 : --info_lib_prefix=opt
- 9.56 : --init=symbol
- 9.57 : --inline, --no_inline
- 9.58 : --inline_type=type
- 9.59 : --inlineveneer, --no_inlineveneer
- 9.60 : input-file-list
- 9.61 : --keep=section_id
- 9.62 : --largeregions, --no_largeregions
- 9.63 : --last=section_id
- 9.64 : --ldpartial
- 9.65 : --legacyalign, --no_legacyalign
- 9.66 : --libpath=pathlist
- 9.67 : --library_type=lib
- 9.68 : --liclinger=seconds
- 9.69 : --licretry
- 9.70 : --list=filename
- 9.71 : --list_mapping_symbols, --no_list_mapping_symbols
- 9.72 : --load_addr_map_info, --no_load_addr_map_info
- 9.73 : --locals, --no_locals
- 9.74 : --mangled, --unmangled
- 9.75 : --map, --no_map
- 9.76 : --match=crossmangled
- 9.77 : --max_er_extension=size
- 9.78 : --max_veneer_passes=value
- 9.79 : --max_visibility=type
- 9.80 : --merge, --no_merge
- 9.81 : --muldefweak, --no_muldefweak
- 9.82 : -o filename, --output=filename
- 9.83 : --override_visibility
- 9.84 : --pad=num
- 9.85 : --paged
- 9.86 : --pagesize=pagesize
- 9.87 : --partial
- 9.88 : --piveneer, --no_piveneer
- 9.89 : --predefine="string"
- 9.90 : --reduce_paths, --no_reduce_paths
- 9.91 : --ref_cpp_init, --no_ref_cpp_init
- 9.92 : --reloc
- 9.93 : --remarks
- 9.94 : --remove, --no_remove
- 9.95 : --ro_base=address
- 9.96 : --ropi
- 9.97 : --rosplit
- 9.98 : --rw_base=address
- 9.99 : --rwpi
- 9.100 : --scanlib, --no_scanlib
- 9.101 : --scatter=filename
- 9.102 : --section_index_display=type
- 9.103 : --show_cmdline
- 9.104 : --show_full_path
- 9.105 : --show_parent_lib
- 9.106 : --show_sec_idx
- 9.107 : --sort=algorithm
- 9.108 : --split
- 9.109 : --startup=symbol, --no_startup
- 9.110 : --strict
- 9.111 : --strict_enum_size, --no_strict_enum_size
- 9.112 : --strict_flags, --no_strict_flags
- 9.113 : --strict_ph, --no_strict_ph
- 9.114 : --strict_relocations, --no_strict_relocations
- 9.115 : --strict_symbols, --no_strict_symbols
- 9.116 : --strict_visibility, --no_strict_visibility
- 9.117 : --strict_wchar_size, --no_strict_wchar_size
- 9.118 : --symbols, --no_symbols
- 9.119 : --symdefs=filename
- 9.120 : --tailreorder, --no_tailreorder
- 9.121 : --thumb2_library, --no_thumb2_library
- 9.122 : --tiebreaker=option
- 9.123 : --undefined=symbol
- 9.124 : --undefined_and_export=symbol
- 9.125 : --unresolved=symbol
- 9.126 : --use_definition_visibility
- 9.127 : --userlibpath=pathlist
- 9.128 : --veneerinject,--no_veneerinject
- 9.129 : --veneer_inject_type=type
- 9.130 : --veneer_pool_size=size
- 9.131 : --veneershare, --no_veneershare
- 9.132 : --verbose
- 9.133 : --version_number
- 9.134 : --vfemode=mode
- 9.135 : --via=filename
- 9.136 : --vsn
- 9.137 : --xref, --no_xref
- 9.138 : --xrefdbg, --no_xrefdbg
- 9.139 : --xref{from|to}=object(section)
- 9.140 : --zi_base=address
- 10 : Linker Steering File Command Reference
- 11 : Via File Syntax