anglaisfrançaisespagnol

Icône de favori OnWorks

abidiff - En ligne dans le Cloud

Exécutez abidiff dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande abidiff qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


abidiff - comparer les ABI des fichiers ELF

abidiff compare les interfaces binaires d'application (ABI) de deux bibliothèques partagées dans ELFE
format. Il émet un rapport significatif décrivant les différences entre les deux ABI.

Pour un rapport de changement ABI complet qui inclut les changements concernant la fonction et la variable
sous-types, les deux bibliothèques partagées d'entrée doivent être accompagnées de leurs informations de débogage
in NAIN format. Sinon, seulement ELFE les symboles qui ont été ajoutés ou supprimés sont signalés.

INVOCATION


abidiff [options]

OPTIONS


· --Aidez-moi | -h

Affichez une courte aide sur la commande et quittez.

· --version | -v

Affichez la version du programme et quittez.

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

Pour les cas où les informations de débogage pour bibliothèque-partagée est divisé en un
fichier séparé, indique abidiff où trouver ce fichier d'informations de débogage séparé.

Notez que di-chemin doit pointer vers le répertoire racine sous lequel les informations de débogage
est arrangé de manière arborescente. Sous les systèmes basés sur Red Hat, ce répertoire est
d'habitude /usr/lib/debug.

Notez également que cette option n'est pas obligatoire pour les informations de débogage fractionnées installées par
le gestionnaire de paquets de votre système car alors abidiff sait où le trouver.

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

J'aime --debug-info-dir1, cette option indique abidiff où trouver le débogage fractionné
informations pour le seconde-bibliothèque-partagée fichier.

· --stat

Plutôt que d'afficher les différences d'ABI détaillées entre bibliothèque-partagée et
seconde-bibliothèque-partagée, affichez simplement quelques statistiques récapitulatives sur ces différences.

· --symtabs

Afficher uniquement les tables de mnémoniques de la bibliothèque-partagée et seconde-bibliothèque-partagée.

· --supprimé-fns

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les fonctions définies globalement qui ont été supprimées
de bibliothèque-partagée.

· --changed-fns

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les changements de sous-types des fonctions globales
défini dans bibliothèque-partagée.

· --add-fns

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les fonctions définies globalement qui ont été ajoutées à
seconde-bibliothèque-partagée.

· --vars-supprimés

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les variables définies globalement qui ont été supprimées
de bibliothèque-partagée.

· --changed-vars

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les changements dans les sous-types du global
variables définies dans bibliothèque-partagée

· --add-vars

Dans le rapport qui en résulte sur les différences entre bibliothèque-partagée et
seconde-bibliothèque-partagée, n'affiche que les variables globales qui ont été ajoutées (définies) à
seconde-bibliothèque-partagée.

· --no-linkage-name

Dans le rapport résultant, n'affichez pas les noms de liaison des éléments ajoutés, supprimés ou
fonctions ou variables modifiées.

· --no-show-locs
Ne pas afficher d'informations sur l'emplacement dans le seconde commun bibliothèque le respectif
type a été modifié.

· --pas de symboles non référencés

Dans le rapport résultant, n'affichez pas les informations de modification sur la fonction et
symboles de variables qui ne sont référencés par aucune information de débogage. Notez que pour
ces symboles ne sont référencés par aucune information de débogage, les informations de changement
affiché sont des symboles ajoutés ou supprimés.

· --suppressions | --suppr <chemin vers les suppressions>

Utilisez un fichier de spécification de suppression situé à chemin vers les suppressions. Notez que ceci
l'option peut apparaître plusieurs fois sur la ligne de commande ; toute la suppression
les fichiers de spécifications sont alors pris en compte.

· --tomber <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, déposez
les fonctions et variables définies globalement dont le nom correspond à l'expression régulière
regex. En conséquence, aucun changement impliquant ces fonctions ou variables ne sera émis
dans le rapport diff.

· --drop-fn <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, déposez
les fonctions définies globalement dont le nom correspond à l'expression régulière regex. En tant que
Par conséquent, aucun changement impliquant ces fonctions ne sera émis dans le rapport diff.

· --drop-var <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, déposez
les variables définies globalement correspondant à une expression régulière regex.

· --garder <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, conservez
les fonctions et variables définies globalement dont les noms correspondent à l'expression régulière
regex. Toutes les autres fonctions et variables sont déposées au sol et ne seront donc pas
apparaissent dans le rapport diff résultant.

· --garder-fn <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, conservez
les fonctions définies globalement dont le nom correspond à l'expression régulière regex. Tous
d'autres fonctions sont déposées sur le sol et n'apparaîtront donc pas dans le résultat
rapport de différence.

· --keep-var <regex>

Lors de la lecture du bibliothèque-partagée et seconde-bibliothèque-partagée Fichiers d'entrée ELF, conservez
le défini globalement quels noms correspondent à l'expression régulière regex. Tous les autres
les variables sont déposées sur le sol et n'apparaîtront donc pas dans le diff résultant
signaler.

· --inoffensif

Dans le rapport diff, affichez uniquement les changements inoffensifs. Par défaut, l'inoffensif
les changements sont filtrés hors du rapport diff garder l'encombrement au minimum et avoir un
un plus grand changement pour repérer les vrais problèmes d'ABI.

· --non nocif

Dans le rapport diff, n'affichez pas les changements nuisibles. Par défaut, seuls les nuisibles
les changements sont affichés dans le rapport diff.

· --redondant

Dans le rapport diff, affichez les modifications redondantes. Un changement redondant est un changement
qui a été affiché ailleurs dans le rapport.

· --non redondant

Dans le rapport diff, faites ne pas afficher les modifications redondantes. Un changement redondant est un changement
qui a été affiché ailleurs dans le rapport. Cette option est activée par
défaut.

· --pas d'architecture

Ne tenez pas compte de l'architecture lors de la comparaison des ABI.

· --dump-diff-arbre
Après le rapport diff, émettre une représentation textuelle de l'arbre des nœuds diff utilisé par
le moteur de comparaison pour représenter les fonctions et variables modifiées. Cette
représentation est émise vers la sortie d'erreur à des fins de débogage. Noter que
cet arbre diff n'est pertinent que pour les fonctions et les variables qui ont un sous-type
changements. Les fonctions et variables ajoutées ou supprimées n'ont pas d'arborescence de nœuds de diff
qui leur est associé.

· --Statistiques

Émettre des statistiques sur diverses choses internes.

· --verbeux

Émettre des journaux détaillés sur la progression de diverses choses internes.

RETOUR VALEURS


Le code de sortie du abidiff la commande est soit 0 si l'ABI des binaires comparés
sont égaux ou non nuls s'ils diffèrent ou si l'outil a rencontré une erreur.

Dans ce dernier cas, le code de sortie est un champ de bits de 8 bits dans lequel chaque bit a un
sens spécifique.

Le premier bit, de valeur 1, nommé ABIDIFF_ERROR signifie qu'il y a eu une erreur.

Le deuxième bit, de valeur 2, nommé ABIDIFF_USAGE_ERROR signifie qu'il y a eu une erreur dans le chemin
l'utilisateur a invoqué l'outil. Il peut être défini, par exemple, si l'utilisateur a invoqué l'outil
avec un commutateur de ligne de commande inconnu, avec un numéro ou un argument erroné, etc. Si ce bit est
réglé, puis le ABIDIFF_ERROR bit doit également être défini.

Le troisième bit, de valeur 4, nommé ABIDIFF_ABI_CHANGE signifie l'ABI des binaires étant
comparés sont différents.

Le quatrième bit, de valeur 8, nommé ABIDIFF_ABI_INCOMPATIBLE_CHANGE désigne l'ABI du
les binaires comparés sont différents d'une manière incompatible. Si ce bit est défini, alors le
ABIDIFF_ABI_CHANGE bit doit également être défini. Si la ABIDIFF_ABI_CHANGE est réglé et le
ABIDIFF_INCOMPATIBLE_CHANGE is ne pas défini, cela signifie que les ABI comparés pourraient
ou peut ne pas être compatible. Dans ce cas, un être humain doit revoir les modifications de l'ABI
pour décider s'ils sont compatibles ou non.

Les bits restants ne sont pas utilisés pour le moment.

UTILISATION EXEMPLES


1. Détecter un changement dans un sous-type d'une fonction :

$ cat -n test-v0.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 structure S0
5 {
6 m0 int;
7} ;
8
9 nul
10 foo(S0* /*nom_paramètre*/)
11 {
12 // faire quelque chose avec nom_paramètre.
13}
$
$ cat -n test-v1.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 structure type_base
5 {
6 int inséré;
7} ;
8
9 structure S0 : public type_base
10 {
11 m0 int;
12} ;
13
14 nul
15 foo(S0* /*nom_paramètre*/)
16 {
17 // faire quelque chose avec nom_paramètre.
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
Résumé des modifications des fonctions : 0 Supprimé, 1 Modifié, 0 Fonction ajoutée
Récapitulatif des modifications des variables : 0 Supprimé, 0 Modifié, 0 Variable ajoutée

1 fonction avec un changement de sous-type indirect :

[C]'function void foo(S0*)' a quelques changements de sous-type indirects :
le paramètre 0 de type 'S0*' a des changements de sous-type :
dans pointé pour taper 'struct S0' :
taille changée de 32 à 64 bits
1 insertion de classe de base :
structure type_base
1 changement de membre de données :
Le décalage 'int S0::m0' est passé de 0 à 32
$

2. Détecter un autre changement dans un sous-type d'une fonction :

$ cat -n test-v0.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 structure S0
5 {
6 m0 int;
7} ;
8
9 nul
10 foo(S0& /*nom_paramètre*/)
11 {
12 // faire quelque chose avec nom_paramètre.
13}
$
$ cat -n test-v1.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 structure S0
5 {
6 caractères inséré_membre ;
7 m0 int;
8} ;
9
10 nul
11 foo(S0& /*nom_paramètre*/)
12 {
13 // faire quelque chose avec nom_paramètre.
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
Résumé des modifications des fonctions : 0 Supprimé, 1 Modifié, 0 Fonction ajoutée
Récapitulatif des modifications des variables : 0 Supprimé, 0 Modifié, 0 Variable ajoutée

1 fonction avec un changement de sous-type indirect :

[C]'function void foo(S0&)' a quelques changements de sous-type indirects :
le paramètre 0 de type 'S0&' a des changements de sous-type :
dans le type référencé 'struct S0' :
taille changée de 32 à 64 bits
1 insertion de membre de données :
'char S0::inserted_member', à l'offset 0 (en bits)
1 changement de membre de données :
Le décalage 'int S0::m0' est passé de 0 à 32

$

3. Détecter que des fonctions ont été supprimées ou ajoutées à une bibliothèque :

$ cat -n test-v0.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 structure S0
5 {
6 m0 int;
7} ;
8
9 nul
10 foo(S0& /*nom_paramètre*/)
11 {
12 // faire quelque chose avec nom_paramètre.
13}
$
$ cat -n test-v1.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 structure S0
5 {
6 caractères inséré_membre ;
7 m0 int;
8} ;
9
10 nul
11 barre(S0& /*nom_paramètre*/)
12 {
13 // faire quelque chose avec nom_paramètre.
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
Résumé des modifications des fonctions : 1 Supprimé, 0 Modifié, 1 Fonctions ajoutées
Récapitulatif des modifications des variables : 0 Supprimé, 0 Modifié, 0 Variable ajoutée

1 Fonction supprimée :
'fonction void foo(S0&)' {_Z3fooR2S0}

1 Fonction ajoutée :
'barre vide de fonction (S0&)' {_Z3barR2S0}

$

Utilisez abidiff en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad