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