a³-Release 24.10

Bessere Analysenübersicht

Bequemeres Arbeiten mit Analysegruppen

Verbesserte Statistik-Ansichten

Mehr Tastenkombinationen für den PDF-Viewer

Verbesserter Difference-Viewer

Neue Zielarchitekturen

Alle Tools für TriCore unterstützen nun TC212 und TC222.

Allgemeine Verbesserungen

  • Workspace-Dateien verbrauchen jetzt deutlich weniger Platz.
  • APX-Dateien, die Sie von eigenen Skripten erzeugen lassen, werden jetzt strikter überprüft.

Qualifizierungskits

  • Berichtsdateien werden nun, sofern vom Benutzer nicht anders angegeben, relativ zum QSK-Installationspfad abgelegt, anstatt relativ zum aktuellen Arbeitsverzeichnis.
  • Neue boardspezifische QSKs:
  • Neue compilerspezifische QSKs:
  • Neue Testfälle für ARM:
    • qk_ais2_adjust_trace_segment_runtimes_function
    • qk_ais2_adjust_trace_segment_runtimes_robustness

Transport-Layer-Security

  • Alle Tools unter allen Betriebssystemen benutzen jetzt einheitlich OpenSSL. Stellen Sie immer sicher, daß Ihre OpenSSL-Bibliotheken auf dem letzten Stand sind.
  • 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 TLS-verschlüsselten Verbindung zwischen dem Client und dem Lizenzmanager, die erst seit dem Release 23.10 besteht.

Bequemeres Arbeiten mit Analysegruppen

  • Analysen können nun auch über den „Edit analyses“-Dialog zwischen verschiedenen Gruppen verschoben werden.
  • Insgesamt wurde die Performance des „Edit analyses“-Dialogs verbessert.
  • Der Dialog zum Anlegen von neuen Analysen führt nun bereits vorhandene Analysegruppen auf.
  • Analysen mit mehreren Startpunkten können in der Analysenübersicht nun zu einer Zeile gefaltet werden.

Textsuche

Die Suche mit Ctrl+F in allen Editor-Ansichten füllt nun das Suchfeld mit dem aktuell markierten Text vor. Falls kein Text markiert ist, wird das Wort unter dem Mauszeiger genommen.

Graphsuche

Verbesserte Sortierung und Hervorhebung von Suchergebnissen.

Symbols-Ansicht

  • Verbesserungen am „Query contents“-Vorgang.
  • Zusätzlicher Filter zum Suchen nach Sections.

Statistik-Ansichten

  • Benutzerdefinierte Spalten werden nun über verschiedene a³-Instanzen hinweg propagiert.
  • Insgesamt verbesserte Stabilität.
  • Statistiken zur Objektgröße können nun gefiltert werden, um nur diejenigen Objekte anzuzeigen, die vom aktuellen Analyse­startpunkt aus erreichbar sind.

Difference-Viewer

Bessere Aktualisierung der Tabs.

PDF-Viewer

Der integrierte PDF-Viewer unterstützt nun mehr Tastenkombinationen.

TraceVisualizer

Verbesserte Stabilität der Ergebnisansicht.

Annotationen

  • Bessere Behandlung von Codeabschnitten, die von der Analyse ausgeschlossen wurden und mehrere Fortsetzungsstellen haben.
  • Verbesserte Auflösung von komplexen Aufrufzielannotationen.
  • Schnellere Auswertung von Wertemengenausdrücken.
  • Der Funktor index_of_parameter akzeptiert nun match als Parameter, z. B.
    index_of_parameter(match(".*abc")) == 1
  • Beim TimingProfiler für generische Targets kann die Ausführungszeit einzelner Instruktionen explizit angegeben werden, z. B.:
    instruction 0xa70 attribute "profiler_cycles": 23;
    Dies hat nur einen Effekt, wenn ein globaler Default für die Zyklenanzahl gesetzt wurde, mittels der globalen Annotation:
    attribute "profiler_cycles": 123;

DWARF

  • Bessere Unterstützung für Enum-Typen von Rust.

Cache- und Pipeline-Analyse

  • Insgesamt höhere Analysegeschwindigkeit.
  • Verbesserte Heuristiken zur automatischen Wahl zwischen Basisblock- und Prediction-Graph-Pfadanalyse.

Pfadanalyse

Reduzierter Speicherverbrauch der ganzzahligen linearen Optimierung.

Value-Analyse

  • Mögliche NULL-Pointer-Dereferenzierungen werden nun als Meldungen ausgegeben statt als Warnungen.
  • Verbesserte Erkennung von Widersprüchen zwischen benutzer­annotierten Speicher­inhalten und dem analysier­ten Code.
  • Das interne Größenlimit für Wertemengen wurde auf 2048 erhöht, zur ggf. besseren Partitionierung. Die Werte in der GUI bleiben wie gehabt.

TimeWeaver

  • Reduzierter Speicherverbrauch.
  • Verbesserte automatische Erkennung von Trace-Formaten.
  • Die XML-Berichte beinhalten nun zusätzlich:
    • Trace-Segment-Feature-Vektoren
    • Konfigurierte Trace-Segment-Ähnlichkeiten mitsamt der angegebenen gemeinsam benutzten Speicherbereiche
    • Kontextsensitiv exportierte Trace-Segmente. Wenn die Zeit für ein Trace-Segment aus einem anderen Trace-Segment übernommen wurde, wird dies im neuen Attribut adjust_edge_id festgehalten, das die ID der Graphen­kante angibt.

ARM

  • Neues Switch-Table-Pattern zur heuristischen Bestimmung der Switch-Table-Größe.
  • Bessere Behandlung von ungültigen geschützten Codeblöcken bei Thumb.
  • Die UDF-Instruktion, welche eine undefinierte Exception aufwirft, wird nun als Programmende behandelt.
  • Verbessertes Switch-Table-Decoding.

C28x

  • Präzisere Analyse von der xpread-Instruktion.
  • Bessere Behandlung von Copy-Abschnitten in COFF-Dateien.
  • Verbessertes Switch-Table-Decoding.

C33x

  • Bessere Behandlung von Copy-Abschnitten in COFF-Dateien.
  • Verbessertes Switch-Table-Decoding.

FR81

Bessere Behandlung von Flag-Registern.

PowerPC

  • Verbesserte Berechnung von Schleifengrenzen.
  • e200: bessere Behandlung von serialisierten Instruktionen.

RISC-V

Neues Switch-Table-Pattern zur heuristischen Bestimmung der Switch-Table-Größe.

RL78

  • Unterstützung für ?C_SSWITCH_L10-Switch-Tabellen.
  • Die ungültige Instruktion 0xff wird nun als Programmende behandelt.

TriCore

  • Unterstützung für TC212 und TC222 (beides AURIXe der ersten Generation).
  • Verbessertes Switch-Table-Decoding.
  • Bessere Behandlung von Aufrufen von externen Routinen fü AURIXe der 1. und 2. Generation.
  • Präzisere Analyse von madd.u-Instruktionen.
  • Präzisere Analyse der Zugriffe auf den CSA.