a³ 23.10 release notes

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

A video summary is available on the AbsInt YouTube channel at
youtube.com/watch?v=1nRGoQdeafk

New targets

* aiT for ARM now supports STM32F103xx (Cortex-M3).

* TimeWeaver is now available for V850/RH850.

* StackAnalyzer and TimingProfiler for C28x now offer 
  generic TMS320F28x as a target.
  
* All tools for M68k now support the Microtec C compiler.

  
AbsInt License Manager (ALM)

All network connections between the ALM server and its clients 
are now TLS-encrypted. 

Upgrading your client to this release requires upgrading your ALM as well. 
Old client versions will continue to work with the new ALM using the 
non-encrypted legacy protocol, unless you block the corresponding port 
in your firewall. The default port for the legacy protocol is 42424, 
while for the new TLS connection it's 42426.

A new environment variable AI_LICENSE_TLS is used to configure the license, 
while old versions use AI_LICENSE. This enables you to set up old and new 
versions to run in parallel, for example:

  AI_LICENSE = alm-server@42424
  AI_LICENSE_TLS = alm-server@42426

The ALM web interface is now served via HTTPS in addition to HTTP.
The default ports are 42427 and 42425, respectively.

  
alauncher

* The tool launcher now supports scanning for installed products 
  in arbitrary directories specified via the option --dir <path>
  
* The launcher will now auto-discover all a³ tools located in sibling 
  a3* directories. This enables you to unpack the product ZIP files 
  in a directory and use the launcher of any of them to access 
  all of them. For example, if you have a directory with a3_arm_123, 
  a3_arm_456, and a3_c_789, you can now use the launcher in a3_c_789/bin 
  to access all three tools.


Linux support

Starting with this release, the Linux version offers native support 
for the Wayland windowing system.


APX

The XSD schema for APX files now allows the attribute "base_address" 
for the tag <executable/>.


GUI

* Analysis items can now be moved to new groups.

* Analysis items can be created for a selected group.

* Improved handling of analysis dependencies, analysis groups, 
  and dependencies to failed analyses.
  
* Improved visualization of syntax errors in AIS editor views.

* Improved comparison of projects with failed tool runs.

* Expected ResultCombinator results can now be modified 
  in the analysis mass edit dialog.
  
* Table columns are now exported to CSV in the same order 
  as they appear in the GUI.


Visualization and results

* The trace segment statistics view now shows data in time units 
  instead of cycles if applicable.
  
* Improved display of memory contents of multi-dimensional arrays 
  in the Symbols view.
  
* Improved search of data in basic blocks in analysis result graphs.


Reporting

TimeWeaver now exports extended trace coverage information 
to XML report files. This information becomes available 
in a context-insensitive fashion by enabling "Output call graph", 
and in a context-sensitive fashion by enabling "Show per context info"
under "Setup" -> "Reporting". 
The trace coverage can then be found in the XML report under a3 -> 
timeweaver_analysis_task -> timeweaver_analysis_results -> trace_coverage.


Annotations

* Improved handling of complex area annotations that are used 
  to define global register contents.
  
* Improved handling of the annotation scopes for 
  instruction snippet { ... } and instruction target { ... }
  
* Improved handling of the functors "entries" and "mem".

* Improved handling of suppressed messages.

* Annotations such as

    area .. writable: false;

  now have an effect on annotations that read 
  from (initially) writable memory.


Value analysis

* Faster type domain analysis.

* Higher precision of memory access address computation.


ARM

Improved switch-table decoding for Clang and DiabData.


C28x

* Support for the extended instruction sets FINTDIV, TMU, FPU64, and VCRC.

* Improved decoding of C28x ELF binaries.


M68020

* Support for the Microtec C compiler.

* Improved iterative decoding.


MIPS

Improved iterative decoding.


PowerPC

* Now assuming that the value of the register r2 
  is given by SDA2BASE for 32-bit executables 
  and by TOC for 64-bit executables.

* Improved detection of mismatch between analysis and annotations.

* Improved iterative decoding.


RISC-V

Improved automatic decoding of computed control-flow transitions.


RL78

The target FLASH mirror area now has to be configured
under Setup -> Hardware.


TriCore

* Improved automatic decoding of syscall and trap control flow targets.

* Improved switch-table decoding for Clang.


V850/RH850

* Support for RH850G4MH instructions.

* Removed read classification for V850E3 stc.w instruction.


x86

* Added support for the ENDBRANCH instruction (part of the Intel 
  Control Flow Enforcement Technology CET) which is treated like a NOP.
  
* Improved iterative decoding.


Cache and pipeline analysis

* aiT WCET Analyzer is now available for STM32F103xx (ARM Cortex-M3).

* WCET snippet-based validation now available for Am486.


TimeWeaver

* TimeWeaver is now available for V850/RH850, supporting all 
  Renesas RH850 boards equipped with a Nexus or AURORA 
  trace interface (e.g. RH850/C1H or RH850/F1KM-S1).
  
* By default the analysis now tries to automatically determine 
  the trace file format.
  
* Excessively high timestamps that might occur due to tracing errors
  can now be filtered out using the new GUI option "Threshold for 
  timestamps" under "Setup" -> "Timing analysis" -> "TimeWeaver".
  The default value is 6000 cycles per instruction.
  
* The threshold for trace segment statistics is now applied per context.
    
* Trace segment statistics now show the full summary time spent 
  in a segment where the segment threshold is applied.
  
* Trace segment statistics now keep track of the minimum 
  and maximum time spent per trace segment.
  
* Introduced handling for OWNERSHIP information in Lauterbach traces.

* Improved detection of valid trace snippet end points.


TraceVisualizer

* Improved analysis performance for large traces and task sets.

* Improved handling of Lauterbach BRANCHFLOW traces.


Qualification Support Kits

* New packages:

  * QSK for StackAnalyzer for ARM (AArch64) with GHS 2020.1.4.
  * QSK for StackAnalyzer for TriCore (32) with Tasking VX 6.2r2p3.
  * QSK for aiT for e200 (32) with GHS 2012.1.
  * Generic QSK for StackAnalyzer for C28x.
  * QSK for StackAnalyzer for C28x with TI 18.2.3.lts.

* The TOR now include a general requirements section,
  requirements for message output functionality, and a 
  section about input files and formats.
  
* Added syntax variant description point >ProgramPoint> 
  to the TOR of qk_ais2_flow_constraints.
  
* Synchronized TOR requirement qk_ais2_program_point_offset 
  with the user manual regarding the description of instruction classes.
  
* New test cases:

    qk_setting_unresolved_computed_branch            all architectures
    
    qk_setting_dynamic_linking_option                ARM, PowerPC, x86
    qk_setting_dynamic_linking_executables
    
    qk_setting_trace_coverage                        all TimeWeavers
    qk_setting_trace_skipped_snippet
    
    qk_setting_relocation_type_r_aarch64_abs64       ARM AArch64
    qk_setting_relocation_type_r_aarch64_copy
    qk_setting_relocation_type_r_aarch64_glob_dat
    qk_setting_relocation_type_r_aarch64_jump_slot
    qk_setting_relocation_type_r_aarch64_relative
    
    qk_setting_relocation_type_r_ppc_addr32          32-bit PowerPC
    qk_setting_relocation_type_r_ppc_copy
    qk_setting_relocation_type_r_ppc_jmp_slot
    qk_setting_relocation_type_r_ppc_relative
    
    qk_setting_relocation_type_r_386_32              32-bit x86
    qk_setting_relocation_type_r_386_copy
    qk_setting_relocation_type_r_386_glob_dat
    qk_setting_relocation_type_r_386_jmp_slot
  
* The test case qk_ais2_area_definitions_simple has been extended 
  to cover all variants of the functor type().
  
* The test case qk_ais2_symbolic_names_label has been extended 
  to cover label name construction by string expressions.
  
* The test case qk_setting_use_only_safe_patterns has been updated 
  to trigger a decoder pattern marked as unsafe.


------------------------------------------------------------------------------
Last updated on 27 October 2023 by alex@absint.com. Copyright 2023 AbsInt.
------------------------------------------------------------------------------

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

A video summary is available on the AbsInt YouTube channel at
youtube.com/watch?v=1nRGoQdeafk