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 zu einer Zeile gefaltet werden.

Textsuche

Die Suche mittels Ctrl+F in allen Editor-Ansichten füllt nun das Suchfeld mit dem aktuell markierten Text. 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 besseren Partitionierung in seltenen Spezialf&auuml;llen. 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ür AURIXe der 1. und 2. Generation.
  • Präzisere Analyse von madd.u-Instruktionen.
  • Präzisere Analyse der Zugriffe auf den CSA.