a³ 24.10 release notes

An HTML version of these notes is available at
absint.com/releasenotes/a3/24.10

A video summary is available at
youtube.com/watch?v=dSGm2U1x_is


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.


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 new TLS-encrypted connection between 
  the client and the License Manager that was first 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.

* Extended filter 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 de-references 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.


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.


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).


Qualification Support Kits

* The default report file location is now based on the QSK installation path,
  and no longer on the current working directory.
  
* New board-specific QSKs:

  * aiT for TC379 (32-bit)
  * aiT for TC389 (32-bit)
  * aiT for TC399 (32-bit)
  * aiT for TMS320F28335 (32-bit)

* New compiler-specific QSKs:

  * aiT for C28x with TI 6.2.0
  * StackAnalyzer for C28x with TI 6.2.0

* New test cases for ARM:

  * qk_ais2_adjust_trace_segment_runtimes_function
  * qk_ais2_adjust_trace_segment_runtimes_robustness

  
------------------------------------------------------------------------------
Last updated on 29 October 2024 by alex@absint.com. Copyright 2024 AbsInt.
------------------------------------------------------------------------------

An HTML version of these release notes is available at
absint.com/releasenotes/a3/24.10

A video summary is available at
youtube.com/watch?v=dSGm2U1x_is