AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

abicheck - En ligne dans le Cloud

Exécutez abicheck 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 abicheck 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


abicheck - vérifie les binaires de l'application pour les appels à des symboles privés ou évolutifs dans
bibliothèques et pour la liaison statique de certaines bibliothèques système.

SYNOPSIS


abicheck [-h] [-k] [-a] [-I] [-v] [-f fichier liste] [-ou fichier de sortie] [-p modèle] [-e modèle] [-j
emplois] [-l une bibliothèque] [-L chemin_ld] [(-s|-S) fichier de base de données] [(-d|-D) fichier de base de données] [-O fichier de base de données] [-UNE
fichier liste] fichiers

DESCRIPTION


abicheck est exécuté sur les binaires de l'application et émet des avertissements chaque fois que l'un des éléments suivants
trois conditions sont détectées :

· Chef symbole usage. Les symboles privés sont des fonctions ou des variables de données dans une bibliothèque
package qui sont internes à ce package. Ils sont utilisés par les bibliothèques du package
pour la communication interne et ne font pas partie de l'API/ABI que les développeurs d'applications
devrait utiliser.

· Évolution symbole usage. Les symboles évolutifs sont des fonctions ou des variables de données dans une bibliothèque
package qui sont destinés à la consommation des développeurs, mais qui ont été marqués comme « évolutifs » ou
« instable » dans le sens où ils peuvent devenir incompatibles ou disparaître sur une version ultérieure
du pack bibliothèque.

· Statique mise en relation. Liaison statique de bibliothèques système (par exemple, libc.a) dans un
l'application n'est généralement pas une bonne idée car le code de la bibliothèque système dans lequel elle se "verrouille"
le binaire de l'application peut devenir incompatible avec les versions ultérieures du système. abicheck
tente de détecter les liaisons statiques de quelques bibliothèques système.

Le comportement par défaut est, pour chaque objet binaire vérifié, d'examiner les appels directs de cet
objet binaire uniquement. Les -l L'option permet aux bibliothèques apportées par l'objet binaire d'avoir
leurs appels ont également été vérifiés.

OPTIONS


Les options suivantes sont prises en charge :

-k Continuez à vérifier les binaires même s'il y a des erreurs graves (rapports d'éditeur de liens dynamiques
symboles non résolus, ldd(1) échecs, aucun symbole détecté).

-h Imprimez un long formulaire d'aide.

-v Verbeux. Imprimez des informations supplémentaires.

-f fichier de liste
La fichier de liste est un fichier contenant une liste d'objets binaires à vérifier, un par ligne.
Cette liste est ajoutée à tous les fichiers fournis en tant qu'arguments sur la ligne de commande. Si
fichier de liste est "-", alors stdin est utilisé.

-o fichier de sortie
Écrire la sortie dans fichier de sortie au lieu de stdout.

-p modèle
Modifiez la correspondance du modèle de nom de version en étiquetant les ensembles de versions privés. La valeur par défaut est
/privé/ en utilisant une correspondance insensible à la casse.

Si un composant de l'expression régulière modèle contient deux deux-points d'affilée : patt1 :: patt2,
alors la correspondance au niveau des symboles sera activée en vérifiant si version::symbole or
bibliothèque::symbole allumettes modèle (où le nom du symbole, la version (le cas échéant) et
le nom de base de la bibliothèque est remplacé par symbole, versionet bibliothèque). Par exemple,

-p 'FOO_VERS.*::_foopriv'
or
-p 'libfoo.so.*::_foopriv'

-e modèle
Pareil que -p mais pour les interfaces "évolutives".

-L chemin ld
Met le LD_LIBRARY_PATH variable d'environnement à chemin ld avant d'appeler dynamique
éditeur de liens. Utilisation -L "" pour désactiver LD_LIBRARY_PATH.

Si l'un des composants de chemin ld est la chaîne "find", alors toutes les bibliothèques partagées
in fichiers sont trouvés et leurs chemins insérés dans l'emplacement « rechercher ». Noter que
la commande sera aléatoire.

-l bibliothèque
Ajoutez le nom de base ou le chemin d'accès complet de la bibliothèque partagée bibliothèque à la liste de
objets à contrôler pour passer des appels privés. Cette option peut se produire plus de
une fois sur la ligne de commande et est additif. Par défaut, seuls les appels directs d'un
binaire aux bibliothèques système sont vérifiés. Les -l interrupteur permet de vérifier
appels indirects, par exemple : app -> supportlib -> systemlib.

-a Parcourez tous les binaires avant de vérifier et de collecter la liste de tous les fichiers partagés
objets. Prenez le nom de base de chaque objet partagé trouvé et agissez comme s'il était
spécifié avec le -l option option, puis exécutez les vérifications abicheck. Par ici,
les appels de tous les objets « internes à l'application » sont vérifiés plutôt que
appels directs. (Utile lorsque les objets partagés n'ont pas leurs dépendances
enregistré.)

-I Ignorez les bibliothèques partagées lors de la vérification, vérifiez uniquement les exécutables. Compatible avec -une,
les bibliothèques seront recherchées en premier, mais pas vérifiées ensuite.

-d fichier de base de données, -D fichier de base de données
Spécifiez la base de données de symboles de fichier plat de secours pour la dynamique (publique vs privée)
test. Ces classifications seront utilisées si la bibliothèque n'est pas versionnée (c'est-à-dire
classification n'existe pas dans la bibliothèque elle-même). Utilisation -D pour indiquer que seulement
Information provenant de fichier de base de données Devrait être utilisé. Lignes dans fichier de base de données peut être de l'un d'eux
formes:

bibliothèque|symbole
bibliothèque|classe|symbole
bibliothèque|FILE=chemin

bibliothèque doit être le chemin complet de la bibliothèque à spécifier (ce ne peut pas être un
nom de base).

La première forme marque symbole comme privé.

La deuxième forme marque symbole avec classe De classe peut être public, privé ou
évoluant.

La troisième forme indique le fichier chemin doit être ouvert à la demande lorsque bibliothèque is
rencontré pour la première fois. Déposer chemin contient des lignes des deux premières formes à l'exception de la
bibliothèque champ. La troisième forme est une accélération pour éviter de traiter de nombreuses classifications
lignes pour les bibliothèques jamais rencontrées dans l'exécution.

-O fichier de base de données
Spécifiez un fichier de remplacement pour modifier la classification des symboles pour la dynamique
test (public vs privé). Le format du fichier de remplacement est le suivant :

bibliothèque|symbole|classe

La bibliothèque peut être le chemin complet ou le nom de base. Si la bibliothèque est "__SKIP__" le symbole
sera ignoré pour toute bibliothèque dans laquelle il se trouve. La classe peut être "publique",
« privé », « évolutif » ou « supprimé ». La classe "supprimée" est un cas particulier, signifie
le symbole a été supprimé de la bibliothèque sur une version. Le symbole "__TOUS__" pour
la classe "supprimée" signifie que toute la bibliothèque a été supprimée ou est autrement instable
à utiliser.

Exemples :

libfoo.so.1|__bar|privé
/lib/libxyz.so.1|baz|public
__PASSER__|__fputwc_xpg5

Ces paramètres remplacent toute classification à l'intérieur de la bibliothèque (de la bibliothèque
gestion des versions, disponible auprès de pv(1), etc.).

-A fichier de liste
Définissez les bibliothèques ABI d'intérêt sur les bibliothèques répertoriées dans fichier de liste (plein
chemins, un par ligne). Seuls les appels dans ces bibliothèques seront vérifiés ; tous
les autres appels à la bibliothèque seront ignorés.

-s fichier de base de données, -S fichier de base de données
Spécifiez des bases de données de symboles plus complètes pour le test de liaison statique. fichier de base de données peut être
une liste de fichiers séparés par des virgules. Si un fichier est une archive statique (lib*.a), il est
traitées pour extraire les symboles. Sinon, il s'agit d'un fichier de base de données composé de
lignes de la forme symbol|library:module par exemple :

shmat|/usr/lib/libc.a:shmsys.o
shmctl|/usr/lib/libc.a:shmsys.o
shmdt|/usr/lib/libc.a:shmsys.o
shmget|/usr/lib/libc.a:shmsys.o


Lorsque tous les symboles d'un module.o sont définis dans l'application, la liaison statique de
ce module (et l'archive de bibliothèque correspondante) est supposé. Utilisation -S pour indiquer
que seul le test de liaison statique doit être effectué.

Utilisez -S int pour faire uniquement la vérification des liens statiques et en utilisant la base de données interne.

Utilisez -s aucun or -S aucun pour ignorer complètement la vérification des liens statiques.

-j nemplois
Courir nemplois en parallèle en tant que processus séparés. Implique -k. Principalement destiné à
plusieurs machines CPU où nemplois doit être proche du nombre de processeurs.
La sortie est collectée dans des fichiers tmp et imprimée en une seule fois vers la fin de l'exécution comme
chaque travail se termine.

If nemplois est "-", "détecter" ou "n", alors nemplois sera défini sur un nombre en fonction de
le nombre de processeurs sur la machine actuelle (si cela peut être déterminé).

OPÉRANDES


Les opérandes suivants sont pris en charge :

fichiers Une liste d'objets binaires d'application à vérifier.

SORTIE


Il y a une ligne par problème (il peut y avoir plusieurs problèmes par binaire vérifié) qui
ressemble à ce qui suit :

Si aucun problème n'a été trouvé :
nom de fichier: D'ACCORD

Si utilisation de symboles privés :
nom de fichier: PRIVÉ (bibliothèque:version_privée) privé_sym

En cas d'évolution de l'utilisation des symboles :
nom de fichier: EN ÉVOLUTION (bibliothèque:évolution_vers) évolution_sym

Si le fichier est lié de manière statique dans une bibliothèque d'archives système :
nom de fichier: STATIC_LINK (archives)

Si la vérification du fichier a été ignorée :
nom de fichier: SAUTER (raison)

Sous l'utilisation de la classe supprimée dans le -O remplacer l'option de fichier, ces problèmes peuvent être
a trouvé:

Si un symbole a été supprimé de la bibliothèque sur une version :
nom de fichier: DELETED_SYM : symbole/bibliothèque

(bibliothèque sera "non lié" si le symbole était non lié)

Si une bibliothèque entière a été supprimée sur une version ou est autrement instable pour
utilisation:
nom de fichier: INSTABLE_LIB : bibliothèque-sonnom = chemin-bibliothèque

(chemin-bibliothèque peut être "fichier introuvable" si la bibliothèque est introuvable)

Les problèmes suivants provoqueront une erreur fatale à moins que le -k l'option est utilisée :

Si l'éditeur de liens dynamique n'a pas pu résoudre N symboles quand ldd -r Était dirigé:
nom de fichier: UNBOUND_SYMBOLS : N

Si l'éditeur de liens dynamique n'a trouvé aucune liaison dynamique :
nom de fichier: AUCUNE_CONNEXION

If ldd -r avec LD_DEBUG=fichiers, liaisons échoué:
nom de fichier: LDD_ERROR

Dans ces trois derniers cas courent ldd -r sur le fichier binaire pour plus d'informations sur ce que
a mal tourné (notez que abicheck fonctionne ldd -r avec LD_DEBUG=fichiers, liaisons ensemble). Sur quelques
systèmes avec lesquels l'éditeur de liens dynamique ne traitera pas les programmes SUID LD_DEBUG définir (cela généralement
résultats en NO_BINDINGS dans l' abicheck production).

Notez que si vous exécutez abicheck sur une bibliothèque partagée (par exemple, libfoo.so) cela
a ne sauraient été construit avec -l lib flags pour enregistrer ses dépendances de bibliothèque, puis le "unbound
symboles" est très probable. Il n'y a pas grand-chose à faire à part reconstruire le
bibliothèque ou en vérifiant un binaire d'application qui utilise la bibliothèque et en utilisant le -l option de
abicheck.

EXIT STATUT


Les valeurs de sortie suivantes sont renvoyées :

0 Aucune erreur et aucun problème trouvé.

1 Une erreur fatale s'est produite.

2 Aucune erreur fatale ne s'est produite, mais certains binaires ont détecté des problèmes.

NOTES


Seuls les objets ELF sont cochés.

Dans le -s -S -d ainsi que -O dbfiles le caractère '#' commence une ligne de commentaire de la manière habituelle.

Sauf si l'on utilise les correspondances personnalisées " ::" fournies via le -p or -e drapeaux, abicheck peut
ne vérifier que les bibliothèques système auxquelles la gestion des versions de symboles leur a été appliquée (c'est-à-dire
les informations privées et/ou évolutives enregistrées pour chaque symbole dans la bibliothèque elle-même).
Pour plus d'informations sur la gestion des versions de symboles, consultez le « Guide de l'éditeur de liens Solaris et des bibliothèques »
carnet de réponses à l'URL http://docs.sun.com/ab2/coll.45.13 et le script Commandes/Version
section de la page d'informations "ld" de l'éditeur de liens GNU.

Les modèles de correspondance de nom de version de symbole par défaut sont des correspondances insensibles à la casse au
chaînes « privée » et « évolutive » pour les cas privés et évolutifs, respectivement.

Les noms de fichiers impairs contenant des guillemets simples ou des sauts de ligne seront ignorés ; tel
les caractères interfèrent avec l'appel de commandes via le shell.

Pour récurser les répertoires, utilisez trouver(1) et soit collecter la sortie dans un fichier à utiliser avec
le -f option, ou dans un tuyau via :

trouver ... | abicheck -f - ...

Utilisez abicheck 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