a³-Release 24.04

Verbesserte Suche

Verbesserte Graphen

Schnelle Navigation mit Ctrl + P

Visualisierung der Analyseabhängigkeiten

Statistiken zur Flußabdeckung

Neue Zielarchitekturen

AbsInt-Lizenzmanager (ALM)

  • Verbessertes Einloggen in Abwesenheit von freien Lizenztokens.
  • Interaktive Valueanalyse benötigt ab sofort nur noch ein freies Token.
  • Falls Sie von einem älteren Release als 23.10 upgraden, muß neben Ihrem a³-Client auch Ihr Lizenz­manager aktualisiert werden. Dies ist notwendig aufgrund der neuen TLS-verschlüsselten Verbindung zwischen dem Client und dem Lizenzmanager, die erst seit dem Release 23.10 besteht.

Allgemeine Verbesserungen

  • Schnellere Analysen bei reduziertem Speicherverbrauch für Projekte mit vielen Konfigurationen.
  • Verbesserter Export von Support-Archiven.

Bessere ORTI-Unterstützung

  • Verbesserter Import von anbieterspezifischen Erweiterungen.
  • Verbesserte Heuristiken zur Bestimmung von Task- und ISR-Eintrittspunkten.

Wayland-Fenstermanager

Unterstützung für benutzerspezifische Dekorationen.

Benutzeroberfläche

  • Neue Icons.
  • Die Option „strip compilation path“ ist nun standardmäßig deaktiviert.
  • Konfigurationen können nun zusätzliche Decoder-Einstellungen überschreiben, darunter Instruktionssatz und CPU-Variante.
  • Schnelle Navigation mit Ctrl + P.

Visualisierung und Ergebnisse

  • Analyseabhängigkeiten in der Analysenübersicht können nun graphisch dargestellt werden.
  • Der Kontextmenüeintrag „Copy AIS annotation“ für Instruktionen in der Graphenansicht kann nun auch „assert assembly”-Annotationen erzeugen.
  • Der Kontextmenüeintrag „Show loop statistics“ in der Graphenansicht ermöglicht nun die Auswahl eines Schleifenkontextes.
  • Die Suche in der Symbols-Ansicht findet nun auch enums anhand ihrer Werte.

Annotationen

  • Bei Angaben zu Programmpunkt-Offsets, die verschiedene Instruktionsklassen kombinieren, überprüft der Decoder nun, ob die Kombination auch gültig ist. Bei jeder Angabe schließen sich jeweils gegenseitig aus:
    • branch, call und return
    • conditional und unconditional
    • access und read
    • access und write
  • Verbesserte Auswertung von number_of_parameters und index_of_parameter.
  • Bessere Behandlung von Trace-Funktoren, die in Ausdrücken eingebettet sind, die von der Valueanalyse ausgewertet werden.

Decoding

  • Demangling von Rust-Symbolen mittels des Clang-Rust-Demanglers.
  • zstd-komprimierte Eingabedateien werden jetzt automatisch dekomprimiert.
  • Unterstützung für zstd-komprimierte Data-Dictionary-Dateien.
  • Verbessertes Auslesen von Sektionen in IEEE-695-Dateien. Der komplette Sektionsinhalt wird nun gelesen, und nur ausführbare Sektionen werden als Code markiert.

DWARF

  • Unterstützung für DWARF-Debuginfos für Rust.
  • Der DW_AT_noreturn-Flag für Routinen hilft nun bei der Klärung, ob eine Rückgabe an den Callee erfolgt.

Berichte

Im XML-Report lauten die möglichen Werte für expectation und analysis_status nun success oder fail (statt true oder false).

Valueanalyse

  • Die Valueanalyse vermeidet nun das Dereferenzieren von NULL-Zeigern und entfernt den Wert NULL aus den zugehörigen Basisregistern, die mithilfe der DWARF-Debuginfos bestimmt werden. Wird eine NULL-Zeiger-Dereferenzierung festgestellt, wird das im Textreport entsprechend vermerkt.
    Diese Heuristik ist nur dann aktiv, wenn unter „Setup“ → „Decoding“ sowohl „Use only safe patterns“ als auch „Extract debug information“ aktiviert sind.
  • Verbessertes Erkennen von unausführbaren Kontrollflußzweigen und widersprüchlichen Registerinhalten.
  • Bessere Verwertung von Informationen zum stackbezogenen Speicher.

PowerPC

  • Verbessertes Switch-Table-Decoding und TOC-Erkennung für 64-Bit-DiabData-Binaries.
  • Verbesserungen am Benutzerhandbuch:
    • Klarstellung, daß beim MPC5777 geschützte Speicherbereiche nicht unterstützt werden.
    • Klarstellungen zum Alignment der Speicherzugriffe beim MPC7448.
  • Versetzte Zugriffe beim MPC7448 lösen nun eine Warnung aus.

TriCore

  • Überarbeitete Instruktionstyp-Klassifizierung.
    • SYSCALL, TRAPV, TRAPSV, TRAPINV, SVLCX und BISR führen einen Lesezugriff zur Bestimmung des neuen Wertes des Registers FCX aus, sowie einen Schreibzugriff zum Ablegen des Kontextes auf dem CSA-Stack. Der Schreibzugriff wird vom Dekoder modeliert. Der Lesezugriff wird modeliert vom Dekoder und von der Valueanalyse.
    • MTCR und MTDCR führen einen Schreibzugriff auf den CSFR-Speicher. Dieser Zugriff wird von der Valueanalyse modeliert.
    • RET and RFE perform a read access to restore the upper context registers from the CSA stack and a write access to update free context list. These read and write accesses are now also modeled in the decoder.
    • RSLCX performs a read access to restore the lower context registers from the CSA stack and a write access to update free context list. These read and write accesses are now also modeled in the decoder.
    • STLCX and STUCX perform a write access to store the lower/upper context registers in memory. This write access is now also modeled in the decoder.
    • FCALL, FCALLA, and FCALLI perform a write access to save the contents of the link register on the user stack. This write access is now also modeled in the decoder.
    • FRET performs a read access to restore the contents of the link register from the user stack. This read access is now also modeled in the decoder.
    • ST.T führt einen Lese- und einen Schreibzugriff auf ein einzelnes Bit im Speicher aus. Beide Zugriffe werden vom Dekoder modeliert.

    Diese Änderungen können Auswirkungen auf AIS2-Annotationen haben, die einen Programmpunkt mithilfe von -> read(n), -> write(n) oder -> access(n) angeben.

  • Beim AURIX wird das CSFR core_id nun direkt modeliert und kann somit in AIS2-Ausdrücken mittels reg("core_id") angesprochen werden.
  • Verbesserter Umgang mit:
    • TRAPINV
    • Division durch Null
    • CSA-Chain-Initialisierung im OS-Code
    • kerneigenem Scratchpad-Speicher für Code und Daten bei AURIX
  • Verbessertes Switch-Table-Decoding für GCC.

Sonstige Zielarchitekturen

  • Am486: erhöhte Präzision dank besserer Behandlung von Bus-Jitter.
  • HCS12(X): bessere Behandlung von Fuzzy-Logic-Instruktionen.
  • M68k: verbessertes Switch-Table-Decoding für Microtec.
  • S12Z: verbessertes Switch-Table-Decoding für CodeWarrior.

TimeWeaver

  • Statistiken zur Flußabdeckung. Diese Zusatzinformationen können helfen, unzureichende Traceabdeckung zu erkennen.
  • Bessere Behandlung von Trace-Snippet-Startpunkten, sowie von Endpunkten für Traces auf der Basisblockebene.
  • Verbesserte Statistiken zur Traceabdeckung für externe Routinen.
  • Verbesserte Visualisierung von Tracesegmenten, die in externen Routinen beginnen oder enden.
  • Bessere Behandlung von benutzerannotierten Endpunkten.
  • Diverse sonstige Verbesserungen bei der Visualisierung.
  • Bessere Unterstützung für CSV-Traces von ARM ULINKpro.

Qualifizierungskits

  • Neue Pakete:
    • QSK für StackAnalyzer für PowerPC (64er Instruktionssatz, generisch)
    • QSK für StackAnalyzer für PowerPC (64er Instruktionssatz, compilerspezifisch: diab-5.9.7.1)
  • Neuer Testfall qk_ais2_computed_targets für alle Architekturen. Dieser faßt die Testfälle qk_ais2_computed_*_targets zusammen und testet zusätzlich die neue AIS2-Annotation targets.
  • Die Testfälle für travalbasierte Messungen wurden optimiert und starten nun keine überflüssigen aiT-Analysen.
  • Compilerspezifische Testfälle, die nur das Decoding betreffen, wurden optimiert und starten nun keine überflüssigen Timing- oder Stackanalysen.
  • Das AIS2-Attribut core_id wird jetzt nur bei Zieltypen überprüft, die es auch tatsächlich exportieren.
  • Die bei manchen Stack-Testfällen vormals fehlende Headerdatei ist nun vorhanden.