Il s'agit de la commande abi-compliance-checker 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
abi-compliance-checker - outil pour comparer la compatibilité ABI de la bibliothèque partagée C/C++
versions
DESCRIPTION
NOM:
Vérificateur de conformité ABI (abi-compliance-checker) Vérifie la rétrocompatibilité d'un
API de la bibliothèque C/C++
DESCRIPTION:
ABI Compliance Checker (ABICC) est un outil de vérification des données binaires et
compatibilité au niveau source d'une bibliothèque C/C++ partagée. L'outil vérifie les fichiers d'en-tête
et les bibliothèques partagées (*.so) des anciennes et nouvelles versions et analyse les changements dans l'API et
ABI (ABI=API+compiler ABI) qui peut rompre la compatibilité au niveau binaire et/ou source :
modifications de la pile d'appels, modifications de la table v, symboles supprimés, champs renommés, etc.
L'incompatibilité binaire peut entraîner un plantage ou un comportement incorrect des applications
construits avec une ancienne version d'une bibliothèque s'ils s'exécutent sur une nouvelle. La source
l'incompatibilité peut entraîner des erreurs de recompilation avec une nouvelle version de la bibliothèque.
L'outil est destiné aux développeurs de bibliothèques logicielles et aux mainteneurs de
systèmes d'exploitation qui souhaitent assurer la compatibilité descendante, c'est-à-dire autoriser
anciennes applications à exécuter ou à recompiler avec des versions de bibliothèque plus récentes.
L'outil peut également être utilisé par les éditeurs de logiciels indépendants pour vérifier la portabilité des applications vers de nouvelles
versions de la bibliothèque. Les problèmes rencontrés peuvent être pris en compte lors de l'adaptation du
application à une nouvelle version de la bibliothèque.
Cet outil est un logiciel libre : vous pouvez le redistribuer et/ou le modifier sous le
termes de la GNU LGPL ou de la GNU GPL.
UTILISATION:
abi-conformité-vérificateur [options]
Exemple:
abi-conformité-vérificateur -lib Nom -vieux ANCIEN.xml -Nouveau NOUVEAU.xml
OLD.xml et NEW.xml sont des descripteurs XML :
1.0
/chemin1/vers/en-tête(s)/ /chemin2/vers/en-tête(s)/
/chemin1/vers/bibliothèque(s)/ /chemin2/vers/bibliothèque(s)/
INFORMATION OPTIONS :
-h|-aide
Imprimez cette aide.
-i|-infos
Imprimer les informations complètes.
-v|-version
Imprimer les informations sur la version.
-version de vidage
Imprimez la version de l'outil (1.99.14) et ne faites rien d'autre.
GÉNÉRAL OPTIONS :
-l|-lib|-library NOM
Nom de la bibliothèque (sans version).
-d1|-old|-o CHEMIN
Descripteur de la 1ère (ancienne) version de la bibliothèque. Il peut s'agir de l'un des éléments suivants :
1. Descripteur XML (fichier VERSION.xml) :
1.0
/chemin1/vers/en-tête(s)/ /chemin2/vers/en-tête(s)/
/chemin1/vers/bibliothèque(s)/ /chemin2/vers/bibliothèque(s)/
2. Dump ABI généré par -déverser option 3. Répertoire avec en-têtes et/ou partagé
bibliothèques 4. Fichier d'en-tête unique
Si vous utilisez 2 à 4 types de descripteurs, vous devez spécifier les numéros de version
avec -v1 ainsi que -v2 options aussi.
Pour plus d'informations, s'il vous plaît voir:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-new|-n CHEMIN
Descripteur de la 2e (nouvelle) version de la bibliothèque.
-déverser|-dump-abi CHEMIN
Créez un vidage ABI de la bibliothèque pour le descripteur XML d'entrée. Vous pouvez le transférer n'importe où
et passer à la place du descripteur. Il peut également être utilisé pour déboguer l'outil.
Versions prises en charge du vidage ABI : 2.0<=V<=3.2
EXTRA OPTIONS :
-app|-chemin de l'application
Cette option permet de spécifier l'application qui doit être vérifiée
portabilité vers la nouvelle version de la bibliothèque.
-librairies-statiques
Vérifiez les bibliothèques statiques au lieu de celles partagées. Les partie de la
Le descripteur XML doit pointer vers l'emplacement des bibliothèques statiques.
-gcc-chemin PATH
Chemin d'accès au compilateur cross GCC à utiliser à la place du GCC (hôte) habituel.
-gcc-préfixe PRÉFIXE
Préfixe de la chaîne d'outils GCC.
-options-gcc OPT
Options de compilateur supplémentaires.
-racine système DIR
Spécifiez le répertoire racine alternatif. L'outil recherchera les chemins d'inclusion dans
les répertoires DIR/usr/include et DIR/usr/lib.
-v1|-version1 NOMBRE
Spécifiez la 1ère version de la bibliothèque en dehors du descripteur. Cette option est nécessaire si vous
ont préféré un autre type de descripteur (voir -d1 option).
En général, vous devez le spécifier dans le descripteur XML :
VERSION
-v2|-version2 NOMBRE
Spécifiez la 2e version de la bibliothèque en dehors du descripteur.
-numéro virtuel NUM
Spécifiez la version de la bibliothèque dans le vidage ABI généré. Les partie de la
le descripteur XML d'entrée sera écrasé dans ce cas.
-s|-strict
Traitez tous les avertissements de compatibilité comme des problèmes. Ajouter un nombre de gravité "Faible"
problèmes à la valeur de retour de l'outil.
-en-têtes-seulement
Vérifiez les fichiers d'en-tête sans bibliothèques partagées. Il est facile à exécuter, mais peut fournir un
rapport de compatibilité de faible qualité avec des faux positifs et sans détection de
symboles ajoutés/supprimés.
Alternativement, vous pouvez écrire le mot "aucun" au rubrique dans le
Descripteur XML :
aucun
-afficher-retval
Afficher le type de retour du symbole dans le rapport.
-liste-de-symboles PATH
Cette option permet de spécifier un fichier avec une liste de symboles (noms mutilés dans
C++) qui doit être vérifié. Les autres symboles ne seront pas vérifiés.
-types-liste PATH
Cette option permet de spécifier un fichier avec une liste de types qui devraient être
vérifié. Les autres types ne seront pas vérifiés.
-saut-symboles PATH
La liste des symboles qui ne doivent pas être vérifiés.
-sauter-types PATH
La liste des types qui ne doivent pas être vérifiés.
-liste-en-têtes PATH
Le fichier avec une liste d'en-têtes, qui doit être vérifié/vidé.
-saut-en-têtes PATH
Le fichier avec la liste des fichiers d'en-tête, qui ne doit pas être vérifié.
-entête Nom
Vérifier/vider l'ABI de cet en-tête uniquement.
-utiliser-les décharges
Créez des dumps pour deux versions d'une bibliothèque et comparez les dumps. Cela devrait augmenter
les performances de l'outil et diminuer l'utilisation de la mémoire système.
-nostdinc
Ne recherchez pas les fichiers d'en-tête dans les répertoires système standard de GCC.
-système de vidage Nom -racine système DIR
Trouvez toutes les bibliothèques partagées et les fichiers d'en-tête dans le répertoire DIR, créez XML
descripteurs et faire des vidages ABI pour chaque bibliothèque. L'ensemble de résultats des vidages ABI peut être
par rapport (--cmp-systèmes) avec l'autre créé pour une autre version d'exploitation
système afin de vérifier leur compatibilité. N'oubliez pas de préciser
-croix-gcc option si votre système cible nécessite une version spécifique de GCC
compilateur (différent de l'hôte GCC). Le vidage ABI système sera généré pour :
sys_dumps/NOM/ARCH
-système de vidage DESCRIPTEUR.xml
Identique à l'option précédente mais prend un descripteur XML du système cible comme
input, où vous devez le décrire :
/* Sections primaires */
/* Nom du système */
/* La liste des chemins vers les fichiers d'en-tête et/ou
répertoires avec fichiers d'en-tête, un par ligne */
/* La liste des chemins vers les bibliothèques partagées et/ou
répertoires avec bibliothèques partagées, un par ligne */
/* Sections facultatives */
/* Liste des répertoires à rechercher
pour que les fichiers d'en-tête génèrent automatiquement des chemins d'inclusion, un par ligne */
/* Liste des répertoires à rechercher
pour les bibliothèques partagées pour résoudre les dépendances, une par ligne */
/* Liste des répertoires avec les outils utilisés
pour l'analyse (chaîne d'outils GCC), un par ligne */
/* Préfixe de la chaîne d'outils GCC.
Exemples :
arm-linux-gnueabi arm-none-symbianelf */
/* Options GCC supplémentaires, une par ligne */
-infosys DIR
Cette option doit être utilisée avec -système de vidage option de vidage de l'ABI de fonctionnement
systèmes et configurer le processus de vidage. Vous pouvez trouver un échantillon dans le package :
modules/cibles/{unix, symbian, windows}
-systèmes-cmp -d1 sys_dumps/NOM1/ARCH -d2 sys_dumps/NOM2/ARCH
Comparez deux vidages ABI système. Créez des rapports de compatibilité pour chaque bibliothèque et le
rapport HTML commun comprenant le résumé des résultats des tests pour toutes les bibliothèques vérifiées.
Le rapport sera généré pour :
sys_compat_reports/NAME1_to_NAME2/ARCH
-liste-libs PATH
Le fichier avec une liste de bibliothèques, qui devrait être vidé par le -système de vidage option
ou doit être vérifié par le -systèmes-cmp option.
-ext|-étendu
Si votre bibliothèque A est censée être utilisée par une autre bibliothèque B et que vous souhaitez contrôler
l'ABI de B, alors vous devez activer cette option. L'outil vérifiera les changements
dans tous les types de données, même s'ils ne sont utilisés par aucune fonction de la bibliothèque A.
les types de données ne font pas partie de l'ABI de la bibliothèque A, mais peuvent faire partie de l'ABI du B
bibliothèque.
Le schéma court est :
app C (cassé) -> lib B (ABI cassé) -> lib A (ABI stable)
-q|-calme
Imprime tous les messages dans le fichier au lieu de stdout et stderr. Chemin par défaut (peut être
changé par -log-chemin option):
journaux/run.log
-sortie standard
Imprimer les résultats d'analyse (rapports de compatibilité et vidages ABI) sur stdout au lieu de
création d'un fichier. Cela permettrait d'acheminer les données vers d'autres programmes.
-format-rapport FMT
Changer le format du rapport de compatibilité. Formats :
htm - Format HTML (par défaut) xml - Format XML
-format de vidage FMT
Changer le format du vidage ABI. Formats :
perl - Données::Format Dumper (par défaut) xml - Format XML
-xml
Pseudo pour : --format-rapport=xml or --dump-format=xml
-long LANGUE
Définir le langage de la bibliothèque (C ou C++). Vous pouvez utiliser cette option si l'outil ne peut pas
détecter automatiquement une langue. Cette option peut être utile pour vérifier les en-têtes de la bibliothèque C
(--lang=C) dans --en-têtes uniquement or --élargi modes.
-cambre CAMBRE
Définir l'architecture de la bibliothèque (x86, x86_64, ia64, arm, ppc32, ppc64, s390, ect.). Les
L'option est utile si l'outil ne peut pas détecter l'architecture correcte de l'entrée
objets.
-binaire|-bin|-abi
Afficher uniquement les problèmes de compatibilité « binaires ». Générer un rapport pour :
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-source|-src|-api
Afficher uniquement les problèmes de compatibilité « Source ». Générer un rapport pour :
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limité-affecté LIMIT
Le nombre maximum de symboles concernés répertoriés sous la description du
taper dans le rapport.
AUTRES OPTIONS :
-tester
Exécutez des tests internes. Créez deux versions binaires incompatibles d'un exemple de bibliothèque et
exécutez l'outil pour vérifier leur compatibilité. Cette option permet de vérifier si
l'outil fonctionne correctement dans l'environnement actuel.
-vidage de test
Testez la capacité à créer, lire et comparer des vidages ABI.
-déboguer
Mode de débogage. Imprimer les informations de débogage à l'écran. Enregistrer les étapes d'analyse intermédiaires
dans le répertoire de débogage :
débogage/LIB_NAME/VERSION/
Pensez également à utiliser --décharger option de débogage de l'outil.
-compatible cpp
Si vos fichiers d'en-tête sont écrits en langage C et peuvent être compilés par le G++
compilateur (c'est-à-dire n'utilisez pas de mots-clés C++), alors vous pouvez en informer l'outil et
accélérer l'analyse.
-cpp-incompatible
Définissez cette option si les fichiers d'en-tête C d'entrée utilisent des mots-clés C++.
-p|-params CHEMIN
Chemin d'accès au fichier avec les noms des paramètres de fonction. Il peut être utilisé pour améliorer le rapport
voir si les fichiers d'en-tête de bibliothèque n'ont pas de nom de paramètre. Format de fichier:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
-relpath PATH
Remplacez les macros {RELPATH} par PATH dans le descripteur XML utilisé pour vider la bibliothèque
ABI (voir -déverser option).
-relpath1 PATH
Remplacez les macros {RELPATH} par PATH dans le 1er descripteur XML (-d1).
-relpath2 PATH
Remplacez les macros {RELPATH} par PATH dans le 2ème descripteur XML (-d2).
-chemin-dump PATH
Spécifiez un chemin de fichier *.abi.tar.gz ou *.abi où générer un vidage ABI. Défaut:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-sorte
Activer le tri des données dans les vidages ABI.
-chemin-rapport PATH
Chemin d'accès au rapport de compatibilité. Défaut:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-chemin-de-rapport PATH
Chemin d'accès au rapport de compatibilité « binaire ». Défaut:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-chemin-du-rapport PATH
Chemin d'accès au rapport de compatibilité "Source". Défaut:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-chemin PATH
Chemin du journal pour tous les messages. Défaut:
logs/NOM_LIB/VERSION/log.txt
-log1-chemin PATH
Chemin du journal pour la 1ère version d'une bibliothèque. Défaut:
logs/LIB_NAME/V1/log.txt
-log2-chemin PATH
Chemin du journal pour la 2e version d'une bibliothèque. Défaut:
logs/LIB_NAME/V2/log.txt
-log-mode MODE
Changer de mode de journalisation. Modes :
w - écraser les anciens journaux (par défaut) a - ajouter les anciens journaux n - ne pas écrire de journaux
-liste-affecté
Générer un fichier avec la liste des symboles incompatibles à côté de la compatibilité HTML
rapport. Utilisez la commande 'c++filt @file' de GNU binutils pour démanteler les symboles C++ dans
le fichier généré. Noms par défaut :
abi_affected.txt src_affected.txt
-composant Nom
Le nom du composant dans le titre et le résumé du rapport HTML. Défaut:
bibliothèque
-Titre Nom
Remplacez le nom de la bibliothèque dans le titre du rapport par NAME. Par défaut sera affiché un
nom spécifié par -l option.
-informaitons supplémentaires DIR
Transférez des informations supplémentaires dans DIR.
-décharge supplémentaire
Créez un vidage ABI étendu contenant tous les symboles de l'unité de traduction.
-Obliger
Essayez d'utiliser cette option si l'outil ne fonctionne pas.
-tolérance NIVEAU
Appliquez un ensemble d'heuristiques pour compiler avec succès les fichiers d'en-tête d'entrée. Vous pouvez
activer plusieurs niveaux de tolérance en les joignant en une seule chaîne (par exemple 13, 124,
etc.). Niveaux:
1 - ignorer les en-têtes non Linux (par exemple win32_*.h, etc.) 2 - ignorer les en-têtes internes (par exemple
*_p.h, impl/*.h, etc.) 3 - ignorer les en-têtes qui incluent les en-têtes non Linux 4 - ignorer
en-têtes inclus par d'autres
-tolérant
Activer le niveau de tolérance le plus élevé [1234].
-vérifier
Vérifiez l'exhaustivité du vidage ABI.
-rapide
Analyse rapide. Désactivez la vérification de certaines instances de modèle.
-ignorer-les-symboles-internes RECONNAISSANCE
Ne vérifiez pas les symboles correspondant au motif.
-sauter-types-internes RECONNAISSANCE
Ne vérifiez pas les types correspondant au modèle.
RAPPORT:
Le rapport de compatibilité sera généré pour :
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Le journal sera généré pour :
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT CODES:
0 - Compatible. L'outil a fonctionné sans aucune erreur. non nul - Incompatible ou
l'outil a fonctionné avec des erreurs.
AUTRES INFORMATION:
http://lvc.github.io/abi-compliance-checker/
Utilisez abi-compliance-checker en ligne à l'aide des services onworks.net