a³ Release 23.04

New targets
* StackAnalyzer, ValueAnalyzer, and TimingProfiler 
  are now available for RL78.
* Initial support for the analysis of dynamically linked
  ELF executables for ARM, PowerPC, RISC-V, and x86.


GUI
* Significantly improved support-archive generation 
  for large and very large projects.
* Comparing projects (via Project -> Compare projects...) 
  now takes configurations into account.
* The analysis overview now offers more optional columns,
  including last analysis results and maximum memory consumption.
* Improved handling of messages with multiple locations.
* The Memory Usage view now also shows the available physical memory.
* Improved handling of license-server network connection issues.
* Improved handling of paths containing a comma in XTC.
* Improved handling of configurations.
* In AIS file editors, the new button "select affected analyses"
  selects all analyses influenced by the currently edited AIS file. 
  This includes all analyses which use or include the AIS file in question, 
  as well as analyses that depend on the analysis results. 
  The selected analyses can then be easily rerun by pressing Play.
* The Analysis Dependencies editor now shows 
  both dependencies and dependents.


Visualization and results
* Now reporting multiple annotation locations for area contents 
  specified through different contains data annotations.
* Faster switching between contexts in the context-selection view 
  for interactive value and pipeline analysis.
* The context-selection view can now be hidden from within 
  interactive value and pipeline analysis views.
* Improved handling of blocks with multiple associated source files.
* Improved annotation target context menus when many locations 
  in the CRL graph are affected.
* The WCET and variable usage per context in the Statistics view 
  now displays its data as a flame graph.
* The interactive value analysis allows searching for locations 
  that change the value of a register or memory cell.
* Improved representation of graph search results.
* Better visualization of feasibility states in the 
  graph search results.
* A running interactive value analysis can be used 
  to query the contents of const variables in the Symbols view.


Reporting
Decoding statistics in XML reports now include (unresolved) computed returns.


Annotations
* Any program point specified by the entry annotation 
  will now be considered as entry point to decode when performing 
  an analysis for "All functions" or "All code labels".
* Labels may now be defined by means of symbolic expressions:

    # define label whose name is given by the analysis ID 
    label attribute("analysis_id"): 0x1000;

* New functor concat(arg_1, ..., arg_n) for constructing symbol names:

   # define labels for interrupt service routines 
   for ("i" : 0 to 255) {
       label concat("ISR_", var("i")): 0xf0000000 + (0x20 * var("i"));
   }

* It is now possible to use the result of a computation in other analyses,
  e.g. to create a dependency via a "takes" annotation.


Decoding
* Decoding statistics now include the number of instructions 
  that read from or write to memory.
* Decoder patterns that rely on symbol-table or debug information 
  are now classified as unsafe.
* Improved detection of the CompCert compiler.


Value analysis
* Reduced memory consumption.
* Improved handling of registers with sub-registers.
* Improved precision for copies of registers with sub-registers.
* Faster value analysis for x86_64.
* Faster loop analysis.
* Now allowing the width functor to be evaluated 
  during the value analysis phase.
* The value analysis now reports whether a function 
  becomes (fully) backwards infeasible.


DWARF
Improved extraction of global datatypes.


Am486/i386/x86
* Improved automatic switch table decoding.
* Added stack pointer guessing for flat and long mode.
* Added info messages about guessed/specified stack pointer 
  and specified stack area.
* Relaxed restrictions for assignments to segment registers 
  in 32-bit flat mode and 64-bit long mode.
* Am486/i386: Improved handling of expand-down segments.
* x86-64: Improved switch table decoding.
* x86-64: Improved decoding of computed calls via function pointer arrays.
* x86-64: Improved automatic decoding of two-dimensional 
  function pointer arrays.


ARM
* Instruction support extended up to ARMv9.3, 
  with certain exceptions listed in the user manual.
* Improved switch table decoding for Clang.


C28x
* Improved automatic decoding of computed control-flow transitions.
* Improved switch table decoding for TI.


TriCore
* Improved automatic decoding of computed control-flow transitions.
* Improved switch table decoding for Tasking.


Cache and pipeline analysis
* e200: Redirect usage of memory type SRAM_A or SRAM_B to SRAM.
* TriCore AURIX 2nd GEN: Improved handling of core-local DLMU memory accesses
  and of fast call/return operations.


TimeWeaver
* More flexible selection of trace snippets to extract.
* Timing annotations for routines and loops.


TraceVisualizer
* Improved handling of routines that contain endless loops.
* Improved handling of tasks that have been interrupted during execution
  and can be called again by the interrupt handler.
* Improved visualization.
* A specific event can now be examined in more detail
  either by double-clicking on it or via a dedicated context menu entry.
* In the flame graph, the first and last trace line 
  is now shown for each task instance.
* Improved handling of large data sets.
* Improved search filter.


Qualification Support Kits
* New QSKs for StackAnalyzer for ARM with the instruction sets
  AArch64 and generic.
* The driver program to run QSK packages has been renamed to "qualify".
* Fixed the content of compiler command line in TOVVCP 
  of compiler-specific QSK packages.
* Improved wording with respect to high-level requirements.
* Added a description of the QSK test structure strategy.
* New test cases:

  qk_ais2_attribute_defined                        all architectures
  qk_ais2_local_memory_accesses_cfg
  qk_ais2_context_specification_value_partitioning
  qk_ais2_user_registers
  qk_ais2_concat
  qk_setting_extract_volatile_memory_regions
  qk_setting_calling_conventions

  qk_setting_extract_constant_memory_regions       all except C16x

  qk_setting_trace_snippets            all generic TimeWeaver packages

  qk_setting_system_bus_width                      e300

  qk_setting_extract_annotations_from_executables  ARM and PPC

  qk_setting_traceformat_lauterbach_branchflow     ARM and PPC (TimeWeaver)

  qk_setting_unsupported_instruction_value         x86, i386, dsPIC (StackAnalyzer)

  qk_settings_data_memory_size                     TriCore  
  qk_settings_instruction_memory_size      
   
  qk_setting_disable_data_access_to_pflash0        AURIX TC377
  qk_setting_disable_data_access_to_pflash1

* The test case qk_ais2_context_specification_trace_partitioning
  now covers local partitioning and performs additional checks.
* The test case qk_setting_cache_specification
  now covers the line size attribute.
* Fixed expected memory-type name in 
  qk_setting_output_object_size_statistics_mpc5777c.
* Updated generic AIS2 test cases for MPC5777C.


------------------------------------------------------------------------------
Last updated on 2 May 2023 by alex@absint.com. Copyright 2023 AbsInt.
------------------------------------------------------------------------------
An HTML version of these release notes is available at
absint.com/releasenotes/a3/23.04