The Embedded Experts

Release notes for SEGGER Toolchain

Release 19. Feb 2021

Compiler

Version 11.4.4

  • Program corrections
    1. Under rare circumstances a tail call could be malformed. Fixed.

Version 11.4.0

  • Improvements
    1. Merged with clang 11.0.1
    2. Several optimizations improving code size for Cortex-M0, A9, A12, A15 and A17 devices.
    3. Several small optimizations improving speed.
  • Program corrections
    1. For some source code lines the debug line information was missing in the output file. Fixed.

Version 11.2.1

  • Program corrections
    1. Under certain circumstances incorrect code was generated for Cortex-M7 targets. Fixed.

Version 11.2.0

  • Improvements
    1. Improve inlining: All functions with large stack called in the same function are either all inlined or none of them are inlined.
    2. Several small optimizations improving code size and speed.

Version 11.0.3

  • Improvements
    1. Functions with large stack requirement are not inlined any more.
  • Program corrections
    1. Don't use indirect calls to weak functions to allow the linker to eliminate the call.
    2. Under certain circumstances the spiller could take a wrong register. Fixed.

Version 11.0.0

  • New features
    1. Merged with clang-11
    2. Activated function outliner when optimizing for size
  • Improvements
    1. Error "anonymous bit-field cannot have qualifiers" was turned into a warning
    2. Many improvements to the code generation and optimization

Version 10.6.6

  • New features
    1. Introduced compiler identification macro __SEGGER_CC__.
  • Program corrections
    1. MUL instructions were not coded correctly if inside an IT block, which causes the assembler to break. Fixed.

Assembler

Version 2.10.0

Linker

Version 4.8.0

  • New features
    1. Added support for Andes Performance Extension controlled by --andes-performance-extension and --no-andes-performance-extension options.
    2. Added support for Huawei custom extension by --huawei-extension and --no-huawei-extension options.
  • Program corrections
    1. Fix missing end-table tag on HTML section detail output.
    2. Fix generation of error message when calling undefined weak symbols in A32 code.

Version 4.6.0

  • New features
    1. Added support for AndeStar CoDense code compression controlled by --instruction-tables and --no-instruction-tables options.
    2. Added "unused input file" map section controlled by --map-unused-inputs and --no-map-unused-inputs options.
    3. Added "unused memory ranges" map section controlled by --map-unused-memory and --no-map-unused-memory options.
  • Program changes
    1. String merging is unavailable on Arm targets.

Version 4.4.1

  • New features
    1. Added code outlining parameterization controlled by --outline-strand-size option.
    2. Added option statement to linker script language.
  • Program corrections
    1. Prevent error if --keep command line switch specifies a non-existent symbol.

Version 4.4.0

  • New features
    1. Added code outlining capability controlled by --outline and --no-outline options.
    2. Added tail merging capability controlled by --tail-merge and --no-tail-merge options.
  • Improvements
    1. If the linker-created initialization table is not referenced in the startup code, it is not included in the linked application.
  • Program corrections
    1. String merging could inadvertently evict required initialization array sections. Fixed.

Version 4.2.1

  • Improvements
    1. Required non-allocatable sections are silently converted to allocatable sections rather than eliciting a warning.

Version 4.2.0

  • New features
    1. Added section merging capability controlled by --merge-sections and --no-merge-sections options.
  • Improvements
    1. Linker-created data is now itemized in the Module Summary section.

Version 4.0.1

  • New features
    1. Architecture mismatch detection and warning controlled by --warn-arch-mismatch and --no-warn-arch-mismatch options.

Version 4.0.0

  • New features
    1. Added support for RISC-V processors.

Version 3.20.5

  • Improvements
    1. Unconditionally generate region symbols when requested, rather than generating only the region symbols used by the linked application. This enables the Embedded Studio IDE to display firmware regions in the Output and Memory Use windows.

Version 3.20.4

  • New features
    1. Added --warn-deprecated and --no-warn-deprecated to advise of scheduled changes.

Version 3.20.2

  • New features
    1. Added assert statement.

Version 3.20.0

  • New features
    1. Detection of unintended/any use of "double" AEABI functions controlled by --warn-all-double, --warn-unintended-double, and --no-warn-double.
    2. Demand-load of appropriate archives controlled by --lazy-load-archives and --no-lazy-load-archives which can improve linker performance with very large archives (> 20 MB).
    3. Optimization of C++ exception handling tables controlled by --optimize-exception-table and --no-optimize-exception-table.
    4. Demangling of C++ names in the map file and diagnostic messages controlled by --pretty-symbol-names, --no-pretty-symbol-names, --pretty-section-names, and --no-pretty-section-names.
    5. Address and size formats in the map file controlled by --map-addr-format and --map-size-format.
    6. Wrapping or truncation of excessive-width columns in the map file controlled by --map-wrap and --no-map-wrap.
    7. Inclusion of exception table section in map file controlled by --map-exception-table and --no-map-exception-table.
    8. Control of per-section cross reference in the map file absolute listing controlled by --map-listing-xref and --no-map-listing-xref.
    9. Added --big-endian and --little-endian with support to link big-endian images.
  • Improvements
    1. Lists of sections and/or symbols are always ordered by symbol name or symbol address if only one one sort criterion makes sense.
    2. Lists of sections and values are always ordered by symbol/section name and then value, or by value and then symbol/section name to enforce a consistent sort order.
    3. Linker-created symbols are shown in symbol lists only if they are used in order to avoid clutter.
    4. Initialization table section is expanded with a better presentation.
    5. Module summary section now breaks out input object files and input object archives for a better summary presentation.
    6. Linker modified to process R_ARM_TRARGET2 relocations identically to the GNU linker. This is in conflict with the handling of R_ARM_TARGET2 defined by the document "ELF for the Arm Architecture", ARM Limited, but is required to make C++ exception handling work with the existing GCC, clang, and libunwind framework. Only use with the GNU and clang toolsets is guaranteed and tested to work with this change.
    7. Creation of synthetic output sections for fixed-size blocks created in the linker script that combine no sections (e.g. stack and heap blocks). This assists Embedded Studio to display memory usage after build, or in the Memory Usage window, accurately.

This document was first released with SEGGER Toolchain on 09. Oct 2020