Dies ist der Befehl abi-compliance-checker, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
abi-compliance-checker - Tool zum Vergleich der ABI-Kompatibilität von gemeinsam genutzten C/C++-Bibliotheken
Versionen
BESCHREIBUNG
Name:
ABI Compliance Checker (abi-compliance-checker) Überprüfung der Abwärtskompatibilität von a
C/C++-Bibliotheks-API
BESCHREIBUNG:
ABI Compliance Checker (ABICC) ist ein Tool zum Überprüfen von Rückwärtsbinär- und
Kompatibilität auf Quellebene einer gemeinsam genutzten C/C++-Bibliothek. Das Tool überprüft Header-Dateien
und Shared Libraries (*.so) alter und neuer Versionen und analysiert Änderungen in API und
ABI (ABI=API+Compiler-ABI), das die Binär- und/oder Quellkompatibilität beeinträchtigen kann:
Änderungen im Calling-Stack, V-Table-Änderungen, entfernte Symbole, umbenannte Felder usw.
Binäre Inkompatibilität kann zu Abstürzen oder falschem Verhalten von Anwendungen führen
mit einer alten Version einer Bibliothek erstellt, wenn sie auf einer neuen ausgeführt werden. Quelle
Inkompatibilität kann zu Neukompilierungsfehlern mit einer neuen Bibliotheksversion führen.
Das Tool richtet sich an Entwickler von Softwarebibliotheken und Betreuer von
Betriebssysteme, die an Abwärtskompatibilität interessiert sind, dh erlauben
alte Anwendungen laufen oder mit neueren Bibliotheksversionen neu kompiliert werden.
Das Tool kann auch von ISVs verwendet werden, um die Übertragbarkeit von Anwendungen auf neue zu überprüfen
Bibliotheksversionen. Gefundene Probleme können bei der Anpassung berücksichtigt werden
Anwendung auf eine neue Bibliotheksversion.
Dieses Tool ist kostenlose Software: Sie können es weiterverteilen und/oder unter dem
Bedingungen der GNU LGPL oder GNU GPL.
VERWENDUNG:
abi-Compliance-Checker [Optionen]
Beispiel:
Abi-Compliance-Checker -lib NAME/FUNKTION -alt ALT.xml -Neu NEU.xml
OLD.xml und NEW.xml sind XML-Deskriptoren:
1.0
/Pfad1/zu/Kopfzeile(n)/ /Pfad2/zu/Kopfzeile(n)/
...
/Pfad1/zu/Bibliothek(en)/ /Pfad2/zu/Bibliothek(en)/
...
INFORMATIONEN OPTIONEN:
-h|-Hilfe
Drucken Sie diese Hilfe aus.
-i|-info
Vollständige Informationen ausdrucken.
-v|-Version
Versionsinformationen drucken.
-Dumpversion
Drucken Sie die Tool-Version (1.99.14) aus und tun Sie nichts anderes.
ALLGEMEIN OPTIONEN:
-l|-lib|-Bibliothek NAME
Bibliotheksname (ohne Version).
-d1|-alt|-o PFAD
Deskriptor der 1. (alten) Bibliotheksversion. Es kann einer der folgenden sein:
1. XML-Deskriptor (Datei VERSION.xml):
1.0
/Pfad1/zu/Kopfzeile(n)/ /Pfad2/zu/Kopfzeile(n)/
...
/Pfad1/zu/Bibliothek(en)/ /Pfad2/zu/Bibliothek(en)/
...
...
2. ABI-Dump generiert von -Dump Option 3. Verzeichnis mit Headern und/oder Shared
Bibliotheken 4. Einzelne Header-Datei
Wenn Sie 2-4 Deskriptortypen verwenden, sollten Sie Versionsnummern angeben
mit -v1 und -v2 Optionen auch.
Weitere Informationen finden Sie unter:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-neu|-n PFAD
Deskriptor der 2. (neuen) Bibliotheksversion.
-Dump|-dump-abi PFAD
Erstellen Sie einen Bibliotheks-ABI-Dump für den Eingabe-XML-Deskriptor. Sie können es überall übertragen
und übergeben Sie anstelle des Deskriptors. Es kann auch zum Debuggen des Tools verwendet werden.
Unterstützte Versionen von ABI-Dump: 2.0<=V<=3.2
EXTRA OPTIONEN:
App|-Anwendungspfad
Mit dieser Option kann die Anwendung angegeben werden, auf die geprüft werden soll
Portabilität auf die neue Bibliotheksversion.
-statische-Bibliotheken
Überprüfen Sie statische Bibliotheken anstelle der freigegebenen. Die Abschnitt der
Der XML-Deskriptor sollte auf den Speicherort der statischen Bibliotheken verweisen.
-gcc-Pfad PATH
Pfad zum Cross-GCC-Compiler, der anstelle des üblichen (Host-)GCC verwendet werden soll.
-gcc-Präfix PRÄFIX
GCC-Toolchain-Präfix.
-gcc-Optionen OPTS
Zusätzliche Compiler-Optionen.
-sysroot DIR
Geben Sie das alternative Stammverzeichnis an. Das Tool sucht nach Pfaden in
die Verzeichnisse DIR/usr/include und DIR/usr/lib.
-v1|-version1 NUM
Geben Sie die 1. Bibliotheksversion außerhalb des Deskriptors an. Diese Option wird benötigt, wenn Sie
einen alternativen Deskriptortyp bevorzugt haben (siehe -d1 Möglichkeit).
Im Allgemeinen sollten Sie es im XML-Deskriptor angeben:
VERSION
-v2|-version2 NUM
Geben Sie die zweite Bibliotheksversion außerhalb des Deskriptors an.
-vnum NUM
Geben Sie die Bibliotheksversion im generierten ABI-Dump an. Die Abschnitt der
Eingabe-XML-Deskriptor wird in diesem Fall überschrieben.
-s|-streng
Behandeln Sie alle Kompatibilitätswarnungen als Probleme. Fügen Sie eine Reihe von Schweregraden "Niedrig" hinzu
Probleme mit dem Rückgabewert des Tools.
-nur Überschriften
Überprüfen Sie Header-Dateien ohne gemeinsam genutzte Bibliotheken. Es ist einfach zu laufen, kann aber eine
Kompatibilitätsbericht von geringer Qualität mit falsch positiven Ergebnissen und ohne Erkennung von
hinzugefügte/entfernte Symbole.
Alternativ können Sie das Wort "keine" an die schreiben Abschnitt in der
XML-Deskriptor:
keine
-show-reval
Den Rückgabetyp des Symbols im Bericht anzeigen.
-Symbole-Liste PATH
Mit dieser Option kann man eine Datei mit einer Liste von Symbolen angeben (verstümmelte Namen in
C++), die überprüft werden sollte. Andere Symbole werden nicht geprüft.
-Typenliste PATH
Mit dieser Option kann eine Datei mit einer Liste von Typen angegeben werden, die
überprüft. Andere Typen werden nicht geprüft.
-Skip-Symbole PATH
Die Liste der Symbole, die nicht überprüft werden sollten.
-Skip-Typen PATH
Die Liste der Typen, die nicht überprüft werden sollen.
-Header-Liste PATH
Die Datei mit einer Liste von Headern, die überprüft/gedumpt werden sollen.
-Skip-Header PATH
Die Datei mit der Liste der Header-Dateien, die nicht überprüft werden sollen.
-Header NAME/FUNKTION
Nur ABI dieses Headers prüfen/dumpen.
-Verwendungsdeponien
Erstellen Sie Dumps für zwei Versionen einer Bibliothek und vergleichen Sie Dumps. Das sollte zunehmen
die Leistung des Tools und verringern die Systemspeichernutzung.
-nostdinc
Suchen Sie nicht in den GCC-Standardsystemverzeichnissen nach Header-Dateien.
-Dump-System NAME/FUNKTION -sysroot DIR
Finden Sie alle gemeinsam genutzten Bibliotheken und Header-Dateien im DIR-Verzeichnis, erstellen Sie XML
Deskriptoren und erstellen ABI-Dumps für jede Bibliothek. Die Ergebnismenge von ABI-Dumps kann sein:
verglichen (--cmp-systeme) mit dem anderen für eine andere Betriebsversion erstellt
System, um sie auf Kompatibilität zu überprüfen. Vergiss nicht anzugeben
-cross-gcc Option, wenn Ihr Zielsystem eine bestimmte Version von GCC erfordert
Compiler (anders als der Host-GCC). Der System-ABI-Dump wird generiert, um:
sys_dumps/NAME/ARCH
-Dump-System DESCRIPTOR.xml
Die gleiche Option wie die vorherige Option, nimmt jedoch einen XML-Deskriptor des Zielsystems als
Eingabe, wo Sie es beschreiben sollten:
/* Primärteile */
/* Name des Systems */
/* Die Liste der Pfade zu Header-Dateien und/oder
Verzeichnisse mit Header-Dateien, eine pro Zeile */
/* Die Liste der Pfade zu gemeinsam genutzten Bibliotheken und/oder
Verzeichnisse mit gemeinsam genutzten Bibliotheken, eine pro Zeile */
/* Optionale Abschnitte */
/* Liste der zu durchsuchenden Verzeichnisse
damit Header-Dateien automatisch Include-Pfade generieren, einen pro Zeile */
/* Liste der zu durchsuchenden Verzeichnisse
für gemeinsam genutzte Bibliotheken zum Auflösen von Abhängigkeiten, eine pro Zeile */
/* Liste der Verzeichnisse mit verwendeten Tools
zur Analyse (GCC-Toolchain), eine pro Zeile */
/* GCC-Toolchain-Präfix.
Beispiele:
arm-linux-gnueabi arm-none-symbianelf */
/* Zusätzliche GCC-Optionen, eine pro Zeile */
-sysinfo DIR
Diese Option sollte verwendet werden mit -Dump-System Option zum Dump ABI des Betriebs
Systeme und konfigurieren Sie den Dumping-Prozess. Ein Muster finden Sie im Paket:
Module/Ziele/{unix, symbian, windows}
-cmp-Systeme -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Vergleichen Sie zwei System-ABI-Dumps. Erstellen Sie Kompatibilitätsberichte für jede Bibliothek und die
gemeinsamer HTML-Bericht mit der Zusammenfassung der Testergebnisse für alle überprüften Bibliotheken.
Bericht wird erstellt an:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-liste PATH
Die Datei mit einer Liste der Bibliotheken, die vom -Dump-System zu erhalten
oder sollte vom -cmp-Systeme .
-ext|-erweitert
Wenn Ihre Bibliothek A von einer anderen Bibliothek B verwendet werden soll und Sie steuern möchten
den ABI von B, dann sollten Sie diese Option aktivieren. Das Tool prüft auf Änderungen
in allen Datentypen, auch wenn sie von keiner Funktion in der Bibliothek A verwendet werden
Datentypen sind nicht Bestandteil des ABI der A-Bibliothek, können aber Bestandteil des ABI des B . sein
Bibliothek.
Das kurze Schema ist:
app C (defekt) -> lib B (defekter ABI) -> lib A (stabiler ABI)
-q|-leise
Drucken Sie alle Nachrichten in die Datei anstelle von stdout und stderr. Standardpfad (kann sein
verändert von -log-Pfad Möglichkeit):
logs/run.log
-stdout
Analyseergebnisse (Kompatibilitätsberichte und ABI-Dumps) auf stdout statt auf . drucken
eine Datei erstellen. Dies würde es ermöglichen, Daten an andere Programme weiterzuleiten.
-Berichtsformat FMT
Format des Kompatibilitätsberichts ändern. Formate:
htm - HTML-Format (Standard) xml - XML-Format
-Dump-Format FMT
Ändern Sie das Format des ABI-Dumps. Formate:
perl - Data::Dumper-Format (Standard) xml - XML-Format
-xml
Alias für: --Berichtsformat=xml or --Dump-Format=xml
-lange SPRACHE
Legen Sie die Sprache der Bibliothek fest (C oder C++). Sie können diese Option verwenden, wenn das Tool dies nicht kann
eine Sprache automatisch erkennen. Diese Option kann nützlich sein, um C-Library-Header zu überprüfen
(- lang=C) in --headers-only or --erweitert Modi.
-Bogen BOGEN
Legen Sie die Bibliotheksarchitektur fest (x86, x86_64, ia64, arm, ppc32, ppc64, s390 usw.). Die
Option ist nützlich, wenn das Tool die korrekte Architektur der Eingabe nicht erkennen kann
Objekte.
-binär|-bin|-abi
Nur "Binär"-Kompatibilitätsprobleme anzeigen. Bericht erstellen an:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-source|-Quelle|-API
Nur Kompatibilitätsprobleme mit "Quelle" anzeigen. Bericht erstellen an:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limit-betroffen LIMIT
Die maximale Anzahl betroffener Symbole, die unter der Beschreibung der geänderten
geben Sie den Bericht ein.
anderes OPTIONEN:
-Test
Führen Sie interne Tests durch. Erstellen Sie zwei binär inkompatible Versionen einer Beispielbibliothek und
Führen Sie das Tool aus, um sie auf Kompatibilität zu überprüfen. Mit dieser Option kann überprüft werden, ob
das Tool funktioniert in der aktuellen Umgebung korrekt.
-Test-Dump
Testen Sie die Fähigkeit, ABI-Dumps zu erstellen, zu lesen und zu vergleichen.
-debuggen
Debugging-Modus. Debug-Informationen auf dem Bildschirm drucken. Zwischenstufen der Analyse speichern
im Debug-Verzeichnis:
debuggen/LIB_NAME/VERSION/
Erwägen Sie auch die Verwendung --entsorgen Option zum Debuggen des Tools.
-cpp-kompatibel
Wenn Ihre Header-Dateien in der Sprache C geschrieben sind und von G++ kompiliert werden können
Compiler (dh keine C++-Schlüsselwörter verwenden), dann können Sie das dem Tool mitteilen und
die Analyse beschleunigen.
-cpp-inkompatibel
Setzen Sie diese Option, wenn C-Header-Eingabedateien C++-Schlüsselwörter verwenden.
-p|-params PFAD
Pfad zur Datei mit den Funktionsparameternamen. Es kann zur Verbesserung des Berichts verwendet werden
anzeigen, wenn die Headerdateien der Bibliothek keine Parameternamen haben. Datei Format:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Ersetzen Sie {RELPATH}-Makros durch PATH im XML-Deskriptor, der zum Ausgeben der Bibliothek verwendet wird
ABI (siehe -Dump Möglichkeit).
-relpath1 PATH
Ersetzen Sie {RELPATH}-Makros durch PATH im 1. XML-Deskriptor (-d1).
-relpath2 PATH
Ersetzen Sie {RELPATH}-Makros durch PATH im 2. XML-Deskriptor (-d2).
-Dump-Pfad PATH
Geben Sie einen *.abi.tar.gz- oder *.abi-Dateipfad an, in dem ein ABI-Dump erstellt werden soll. Standard:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-Sortieren
Aktivieren Sie die Sortierung von Daten in ABI-Dumps.
-Berichtspfad PATH
Pfad zum Kompatibilitätsbericht. Standard:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-report-pfad PATH
Pfad zum Kompatibilitätsbericht "Binär". Standard:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-Berichtspfad PATH
Pfad zum Kompatibilitätsbericht "Quelle". Standard:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-Pfad PATH
Protokollpfad für alle Nachrichten. Standard:
logs/LIB_NAME/VERSION/log.txt
-log1-Pfad PATH
Protokollpfad für die 1. Version einer Bibliothek. Standard:
logs/LIB_NAME/V1/log.txt
-log2-Pfad PATH
Protokollpfad für die 2. Version einer Bibliothek. Standard:
logs/LIB_NAME/V2/log.txt
-Logging-Modus MODUS
Protokollierungsmodus ändern. Modi:
w - alte Protokolle überschreiben (Standard) a - alte Protokolle anhängen n - keine Protokolle schreiben
-Liste-betroffene
Generieren Sie eine Datei mit der Liste der inkompatiblen Symbole neben der HTML-Kompatibilität
Prüfbericht. Verwenden Sie den Befehl 'c++filt @file' von GNU Binutils, um C++-Symbole in zu entwirren
die generierte Datei. Standardnamen:
abi_betroffen.txt src_betroffen.txt
-Komponente NAME/FUNKTION
Der Komponentenname im Titel und in der Zusammenfassung des HTML-Berichts. Standard:
Bibliothek
-Titel NAME/FUNKTION
Ändern Sie den Bibliotheksnamen im Berichtstitel in NAME. Standardmäßig wird angezeigt a
Name angegeben von -l .
-Zusatzinformation DIR
Geben Sie zusätzliche Informationen in DIR ab.
-Extra-Dump
Erstellen Sie einen erweiterten ABI-Dump, der alle Symbole aus der Übersetzungseinheit enthält.
-Macht
Versuchen Sie, diese Option zu verwenden, wenn das Tool nicht funktioniert.
-Toleranz LEVEL
Wenden Sie eine Reihe von Heuristiken an, um Eingabeheaderdateien erfolgreich zu kompilieren. Du kannst
Ermöglichen Sie mehrere Toleranzstufen, indem Sie sie zu einem String zusammenfügen (z. B. 13, 124,
etc.). Ebenen:
1 - Nicht-Linux-Header überspringen (zB win32_*.h, etc.) 2 - Interne Header überspringen (zB
*_p.h, impl/*.h usw.) 3 - Überspringe Header, die Nicht-Linux-Header enthalten 4 - skip
Überschriften von anderen eingefügt
-tolerant
Höchste Toleranzstufe aktivieren [1234].
-prüfen
Überprüfen Sie die Vollständigkeit des ABI-Dumps.
-schnell
Schnelle Analyse. Deaktivieren Sie die Überprüfung einiger Vorlageninstanzen.
-interne-Symbole überspringen MUSTER
Überprüfen Sie keine Symbole, die dem Muster entsprechen.
-interne-Typen überspringen MUSTER
Überprüfen Sie keine Typen, die dem Muster entsprechen.
BERICHT:
Der Kompatibilitätsbericht wird erstellt an:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Protokoll wird erstellt an:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT CODE:
0 - Kompatibel. Das Tool ist ohne Fehler gelaufen. ungleich Null - Inkompatibel oder
das Tool wurde mit Fehlern ausgeführt.
MEHR ERFAHREN INFORMATION:
http://lvc.github.io/abi-compliance-checker/
Verwenden Sie den abi-compliance-checker online mit den onworks.net-Diensten