EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

abidiff – Online in der Cloud

Führen Sie abidiff im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl abidiff, 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


abidiff – ABIs von ELF-Dateien vergleichen

abidiff vergleicht die Application Binary Interfaces (ABI) zweier gemeinsam genutzter Bibliotheken in ELF
Format. Es wird ein aussagekräftiger Bericht ausgegeben, der die Unterschiede zwischen den beiden ABIs beschreibt.

Für einen umfassenden ABI-Änderungsbericht, der Änderungen an Funktion und Variable enthält
Untertypen müssen die beiden gemeinsam genutzten Eingabebibliotheken mit ihren Debuginformationen versehen sein
in ZWERG Format. Ansonsten nur ELF Symbole, die hinzugefügt oder entfernt wurden, werden gemeldet.

AUFRUF


abidiff [Optionen]

OPTIONAL


· --help | -h

Zeigt eine kurze Hilfe zum Befehl und zum Beenden an.

· --Version | -v

Zeigen Sie die Version des Programms an und beenden Sie es.

· --debug-info-dir1 | --d1 <di-path1>

Für Fälle, in denen die Debug-Informationen für erste-gemeinsame-Bibliothek ist aufgeteilt in a
separate Datei, erzählt Abidiff Wo finde ich diese separate Debug-Informationsdatei?

Beachten Sie, dass Di-Pfad muss auf das Stammverzeichnis verweisen, unter dem sich die Debug-Informationen befinden
ist baumartig angeordnet. Unter Red Hat-basierten Systemen ist dieses Verzeichnis
gewöhnlich /usr/lib/debug.

Beachten Sie auch, dass diese Option für geteilte Debug-Informationen, die von installiert werden, nicht obligatorisch ist
weil dann der Paketmanager Ihres Systems Abidiff weiß, wo es zu finden ist.

· --debug-info-dir2 | --d2 <di-path2>

Like --debug-info-dir1, verrät diese Option Abidiff Wo finde ich das Split-Debug?
Informationen für die zweite gemeinsam genutzte Bibliothek Datei.

· -stat

Anstatt die detaillierten ABI-Unterschiede zwischen anzuzeigen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, zeigen Sie einfach einige zusammenfassende Statistiken zu diesen Unterschieden an.

· --symtabs

Zeigen Sie nur die Symboltabellen der an erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek.

· --deleted-fns

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, zeigen nur die global definierten Funktionen an, die gelöscht wurden
für erste-gemeinsame-Bibliothek.

· --changed-fns

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, zeigen nur die Änderungen in Untertypen der globalen Funktionen an
definiert in erste-gemeinsame-Bibliothek.

· --added-fns

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, zeigen nur die global definierten Funktionen an, zu denen hinzugefügt wurde
zweite gemeinsam genutzte Bibliothek.

· --deleted-vars

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothekwerden nur die global definierten Variablen angezeigt, die gelöscht wurden
für erste-gemeinsame-Bibliothek.

· --changed-vars

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, zeigen Sie nur die Änderungen in den Untertypen des globalen an
Variablen definiert in erste-gemeinsame-Bibliothek

· --added-vars

Im daraus resultierenden Bericht über die Unterschiede zwischen erste-gemeinsame-Bibliothek und
zweite gemeinsam genutzte Bibliothek, werden nur die globalen Variablen angezeigt, denen hinzugefügt (definiert) wurde
zweite gemeinsam genutzte Bibliothek.

· --no-linkage-name

Im resultierenden Bericht werden die Verknüpfungsnamen der hinzugefügten, entfernten oder nicht angezeigt
geänderte Funktionen oder Variablen.

· --no-show-locs
Zeigen Sie keine Informationen darüber an, wo in der zweite von Locals geführtes Bibliothek die jeweiligen
Typ wurde geändert.

· --no-unreferenced-symbols

Im resultierenden Bericht werden keine Änderungsinformationen zu Funktion und angezeigt
Variablensymbole, auf die in keiner Debug-Information verwiesen wird. Beachten Sie, dass für
Auf diese Symbole verweisen keine Debug-Informationen, die Änderungsinformationen
Angezeigt werden entweder hinzugefügte oder entfernte Symbole.

· --Unterdrückungen | --suppr <Weg zur Unterdrückung>

Verwenden Sie eine Unterdrückungsspezifikationsdatei unter Weg zur Unterdrückung. Beachten Sie, dass dies
Option kann mehrmals in der Befehlszeile erscheinen; die ganze Unterdrückung
Dabei werden die Spezifikationsdateien berücksichtigt.

· --Tropfen <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien, löschen
die global definierten Funktionen und Variablen, deren Namen mit dem regulären Ausdruck übereinstimmen
Regex. Daher werden keine Änderungen ausgegeben, die diese Funktionen oder Variablen betreffen
im Diff-Bericht.

· --drop-fn <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien, löschen
die global definierten Funktionen, deren Name mit dem regulären Ausdruck übereinstimmt Regex. Als ein
Infolgedessen werden im Diff-Bericht keine Änderungen ausgegeben, die diese Funktionen betreffen.

· --drop-var <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien, löschen
die global definierten Variablen, die einem regulären Ausdruck entsprechen Regex.

· --halten <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien behalten
die global definierten Funktionen und Variablen, deren Namen mit dem regulären Ausdruck übereinstimmen
Regex. Alle anderen Funktionen und Variablen fallen auf den Boden und werden daher nicht gelöscht
erscheinen im resultierenden Diff-Bericht.

· --keep-fn <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien behalten
die global definierten Funktionen, deren Name mit dem regulären Ausdruck übereinstimmt Regex. Alle
Andere Funktionen fallen auf den Boden und erscheinen daher nicht im Ergebnis
Diff-Bericht.

· --keep-var <Regex>

Beim Lesen der erste-gemeinsame-Bibliothek und zweite gemeinsam genutzte Bibliothek ELF-Eingabedateien behalten
die global definierten Namen, die mit dem regulären Ausdruck übereinstimmen Regex. Alle Anderen
Variablen werden auf den Boden gelegt und erscheinen daher nicht im resultierenden Diff
berichten.

· --harmlos

Zeigen Sie im Diff-Bericht nur die harmlosen Änderungen an. Standardmäßig ist das harmlos
Änderungen werden aus dem Diff-Bericht herausgefiltert, um die Unordnung auf ein Minimum zu beschränken und eine
größere Veränderung, um echte ABI-Probleme zu erkennen.

· --nicht-schädlich

Zeigen Sie im Diff-Bericht die schädlichen Änderungen nicht an. Standardmäßig nur das Schädliche
Änderungen werden im Diff-Bericht angezeigt.

· --überflüssig

Zeigen Sie im Diff-Bericht redundante Änderungen an. Eine überflüssige Änderung ist eine Änderung
das wurde an anderer Stelle im Bericht angezeigt.

· --no-redundant

Tun Sie dies im Diff-Bericht NICHT redundante Änderungen anzeigen. Eine überflüssige Änderung ist eine Änderung
das wurde an anderer Stelle im Bericht angezeigt. Diese Option wird durch aktiviert
default.

· --no-architecture

Berücksichtigen Sie beim Vergleich von ABIs nicht die Architektur.

· --dump-diff-tree
Geben Sie nach dem Diff-Bericht eine Textdarstellung des von verwendeten Diff-Knotenbaums aus
die Vergleichs-Engine zur Darstellung der geänderten Funktionen und Variablen. Das
Die Darstellung wird zu Debugzwecken an die Fehlerausgabe ausgegeben. Beachten Sie, dass
Dieser Diff-Baum ist nur für Funktionen und Variablen relevant, die einen Untertyp haben
Änderungen. Hinzugefügte oder entfernte Funktionen und Variablen haben keinen Diff-Knotenbaum
mit ihnen verbunden.

· --Statistiken

Geben Sie Statistiken über verschiedene interne Dinge aus.

· - ausführlich

Geben Sie ausführliche Protokolle über den Fortschritt verschiedener interner Dinge aus.

RÜCKKEHR WERTE


Der Exit-Code des Abidiff Der Befehl ist entweder 0, wenn der ABI der zu vergleichenden Binärdateien ist
gleich sind oder ungleich Null sind, wenn sie unterschiedlich sind oder das Tool einen Fehler festgestellt hat.

Im letzteren Fall ist der Exit-Code ein 8 Bit breites Bitfeld, in dem jedes Bit einen hat
spezifische Bedeutung.

Das erste Bit mit dem Wert 1, benannt ABIDIFF_ERROR bedeutet, dass ein Fehler aufgetreten ist.

Das zweite Bit mit dem Wert 2, benannt ABIDIFF_USAGE_ERROR bedeutet, dass ein Fehler aufgetreten ist
Der Benutzer hat das Tool aufgerufen. Es kann beispielsweise festgelegt werden, wenn der Benutzer das Tool aufgerufen hat
mit einem unbekannten Befehlszeilenschalter, mit einer falschen Zahl oder einem falschen Argument usw. Wenn dieses Bit vorhanden ist
eingestellt, dann die ABIDIFF_ERROR Das Bit muss ebenfalls gesetzt sein.

Das dritte Bit mit dem Wert 4, benannt ABIDIFF_ABI_CHANGE bedeutet den ABI der Binärdateien
verglichen sind unterschiedlich.

Das vierte Bit mit dem Wert 8 wird benannt ABIDIFF_ABI_INCOMPATIBLE_CHANGE bedeutet den ABI des
Die verglichenen Binärdateien unterscheiden sich auf inkompatible Weise. Wenn dieses Bit gesetzt ist, dann wird die
ABIDIFF_ABI_CHANGE Das Bit muss ebenfalls gesetzt sein. Wenn die ABIDIFF_ABI_CHANGE eingestellt ist und die
ABIDIFF_INCOMPATIBLE_CHANGE is NICHT gesetzt, dann bedeutet das, dass die ABIs verglichen werden könnten
oder möglicherweise nicht kompatibel. In diesem Fall muss ein Mensch die ABI-Änderungen überprüfen
um zu entscheiden, ob sie kompatibel sind oder nicht.

Die restlichen Bits werden im Moment nicht verwendet.

ANWENDUNG Beispiele:


1. Erkennen einer Änderung in einem Untertyp einer Funktion:

$ cat -n test-v0.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 Struktur S0
fünfzehn {
6 int m0;
7 };
8
9 nichtig
10 foo(S0* /*parameter_name*/)
fünfzehn {
12 // etwas mit Parametername machen.
13}
$
$ cat -n test-v1.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 Strukturtyp_Basis
fünfzehn {
6 int eingefügt;
7 };
8
9 Struktur S0: öffentliche Typbasis
fünfzehn {
11 int m0;
12 };
13
14 nichtig
15 foo(S0* /*parameter_name*/)
fünfzehn {
17 // etwas mit Parametername machen.
18}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Zusammenfassung der Funktionsänderungen: 0 entfernt, 1 geändert, 0 Funktion hinzugefügt
Zusammenfassung der Variablenänderungen: 0 entfernt, 0 geändert, 0 Variable hinzugefügt

1 Funktion mit einigen indirekten Untertypänderungen:

[C]'function void foo(S0*)' weist einige indirekte Untertypänderungen auf:
Parameter 0 vom Typ „S0*“ weist Untertypänderungen auf:
in wies auf den Typ 'struct S0' hin:
Größe von 32 auf 64 Bit geändert
1 Basisklasseneinfügung:
Strukturtyp_Basis
1 Datenelementänderung:
'int S0::m0' Offset wurde von 0 auf 32 geändert
$

2. Erkennen einer weiteren Änderung in einem Untertyp einer Funktion:

$ cat -n test-v0.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 Struktur S0
fünfzehn {
6 int m0;
7 };
8
9 nichtig
10 foo(S0& /*parameter_name*/)
fünfzehn {
12 // etwas mit Parametername machen.
13}
$
$ cat -n test-v1.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 Struktur S0
fünfzehn {
6 Zeichen insert_member;
7 int m0;
8 };
9
10 nichtig
11 foo(S0& /*parameter_name*/)
fünfzehn {
13 // etwas mit Parametername machen.
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Zusammenfassung der Funktionsänderungen: 0 entfernt, 1 geändert, 0 Funktion hinzugefügt
Zusammenfassung der Variablenänderungen: 0 entfernt, 0 geändert, 0 Variable hinzugefügt

1 Funktion mit einigen indirekten Untertypänderungen:

[C]'function void foo(S0&)' weist einige indirekte Untertypänderungen auf:
Parameter 0 vom Typ „S0&“ weist Untertypänderungen auf:
im referenzierten Typ 'struct S0':
Größe von 32 auf 64 Bit geändert
1 Datenelement-Einfügung:
'char S0::inserted_member', bei Offset 0 (in Bits)
1 Datenelementänderung:
'int S0::m0' Offset wurde von 0 auf 32 geändert

$

3. Erkennen, dass Funktionen entfernt oder einer Bibliothek hinzugefügt wurden:

$ cat -n test-v0.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 Struktur S0
fünfzehn {
6 int m0;
7 };
8
9 nichtig
10 foo(S0& /*parameter_name*/)
fünfzehn {
12 // etwas mit Parametername machen.
13}
$
$ cat -n test-v1.cc
1 // Kompilieren Sie dies mit:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 Struktur S0
fünfzehn {
6 Zeichen insert_member;
7 int m0;
8 };
9
10 nichtig
11 bar(S0& /*parameter_name*/)
fünfzehn {
13 // etwas mit Parametername machen.
14}
$
$ g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
$ g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
$
$ ../build/tools/abidiff libtest-v0.so libtest-v1.so
Zusammenfassung der Funktionsänderungen: 1 entfernt, 0 geändert, 1 hinzugefügte Funktionen
Zusammenfassung der Variablenänderungen: 0 entfernt, 0 geändert, 0 Variable hinzugefügt

1 Entfernte Funktion:
'Funktion void foo(S0&)' {_Z3fooR2S0}

1 Funktion hinzugefügt:
'Funktion void bar(S0&)' {_Z3barR2S0}

$

Nutzen Sie Abidiff online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad