a³ release 24.10

Improved Overview

Comfortable handling of analysis groups

Improved Statistics views

Improved PDF viewer

Improved Difference Viewer

New targets

All tools for TriCore now support TC212 and TC222.

General improvements

  • Workspace files are now much smaller in size.
  • Stricter consistency checks for APX files generated by customer scripts.

Qualification Support Kits

  • The default location for report files is now based on the QSK installation path, and no longer on the current working directory.
  • New board-specific QSKs:
  • New compiler-specific QSKs:
  • New test cases for ARM:
    • qk_ais2_adjust_trace_segment_runtimes_function
    • qk_ais2_adjust_trace_segment_runtimes_robustness

Transport layer security

  • All the tools on all platforms now uniformly use OpenSSL. Please keep your OpenSSL libraries up-to-date.
  • When upgrading your client from a release older than 23.10, make sure to upgrade your License Manager as well. This is necessary due to the TLS-encrypted connection between the client and the License Manager that was introduced in release 23.10.

Comfortable handling of analysis groups

  • The “Edit analyses” dialog now allows re-assigning selected analyses to a different group.
  • Improved performance of the “Edit analyses” dialog.
  • The “Create analyses” dialog now lists available analysis groups to select from.
  • On the Overview page, analyses with additional starts can now be folded into a single line.

Text search

In all editor views, searching by pressing Ctrl+F now automatically pre-fills the search field with the current selection. If nothing is selected, the word currently under the text cursor is used.

Graph search

Improved sorting and highlighting of search results.

Symbols view

  • Improved “Query contents” operation.
  • The filter has been extended to allow searching for sections.

Statistics views

  • Editing the columns is now persistent across multiple a³ instances.
  • Generally improved stability.
  • Object size statistics can now be filtered to only show the objects reachable from the analyzed entry point.

Difference Viewer

Improved refreshing of the Results tab.

PDF viewer

The integrated PDF viewer now supports more navigation shortcuts.

TraceVisualizer

Improved stability of the Results view.

Annotations

  • Improved handling of not-analyzed code snippets with multiple continuation points.
  • Improved resolution of complex call-target annotations.
  • Faster evaluation of sets-of-values expressions.
  • The index_of_parameter functor now allows regular expressions to match the parameter name, e.g.
    index_of_parameter(match(".*abc")) == 1
  • TimingProfiler for generic targets supports specifying execution times for individual instructions, e.g.
    instruction 0xa70 attribute "profiler_cycles": 23;
    This mode is only enabled if a global default for the number of cycles has been set, using the global annotation:
    attribute "profiler_cycles": 123;

DWARF

  • Improved support for Rust enum types.

Cache and pipeline analysis

  • General improvements to the analysis speed.
  • Improved heuristics for the automatic selection between basic-block and prediction-graph path analysis.

Path analysis

Improved memory usage of the ILP solving phase.

Value analysis

  • Potential NULL pointer dereferences are now classified as info messages rather than warnings.
  • Improved detection of contradictions between annotated (constant) memory contents and analyzed code.
  • The internal maximum size limit for value sets has been increased to 2048, to allow for improved partitioning in certain corner cases. The values in the GUI are unaffected by this change.

TimeWeaver

  • Reduced memory usage.
  • More robust automatic detection of trace formats.
  • XML reports now include:
    • Trace segment feature vectors
    • Configured trace segment similarity features alongside the specified shared memory regions
    • Context-sensitively exported trace segments. If trace segment times have been imported from another trace segment, this is reported in the new attribute adjust_edge_id that encodes the ID of the trace graph edge (aka trace segment).

ARM

  • Added a switch-table pattern that heuristically guesses the switch-table size.
  • Improved handling of invalid guarded code blocks for Thumb.
  • The UDF instruction, which raises an undefined instruction exception, is now handled as a program end.
  • Improved PC-relative switch-table decoding.

C28x

  • Higher analysis precision for the xpread instruction.
  • Improved handling of copy sections in COFF files.
  • Improved automatic switch-table decoding.

C33x

  • Improved handling of copy sections in COFF files.
  • Improved automatic switch-table decoding.

FR81

Improved handling of flag registers.

PowerPC

  • Improved loop-bound computation.
  • e200: Improved handling of memory serialized instructions.

RISC-V

Added a switch-table pattern that heuristically guesses the switch-table size.

RL78

  • Added support for ?C_SSWITCH_L10 switch tables.
  • The invalid instruction 0xff is considered as end of program.

TriCore

  • Support for TC212 and TC222 (both AURIX 1st GEN).
  • Improved automatic switch table decoding.
  • Improved handling of calls to external routines for 1st and 2nd GEN AURIX.
  • Higher analysis precision for the madd.u instruction.
  • Higher analysis precision for CSA accesses.