Questo è il comando abi-compliance-checker che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici postazioni di lavoro online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
abi-compliance-checker - strumento per confrontare la compatibilità ABI della libreria C/C++ condivisa
versioni
DESCRIZIONE
NOME:
ABI Compliance Checker (abi-compliance-checker) Verifica la retrocompatibilità di a
API della libreria C/C++
DESCRIZIONE:
ABI Compliance Checker (ABICC) è uno strumento per il controllo di file binari a ritroso e
compatibilità a livello di sorgente di una libreria C/C++ condivisa. Lo strumento controlla i file di intestazione
e librerie condivise (*.so) di vecchie e nuove versioni e analizza i cambiamenti nelle API e
ABI (ABI=API+ABI del compilatore) che potrebbe violare la compatibilità binaria e/o a livello di sorgente:
modifiche nello stack di chiamate, modifiche alla v-table, simboli rimossi, campi rinominati, ecc.
L'incompatibilità binaria può causare arresti anomali o comportamenti errati delle applicazioni
costruiti con una vecchia versione di una libreria se vengono eseguiti su una nuova. Fonte
l'incompatibilità può causare errori di ricompilazione con una nuova versione della libreria.
Lo strumento è destinato agli sviluppatori di librerie software e ai manutentori di
sistemi operativi interessati a garantire la retrocompatibilità, ovvero consentire
vecchie applicazioni da eseguire o da ricompilare con versioni di libreria più recenti.
Inoltre, lo strumento può essere utilizzato dagli ISV per verificare la portabilità delle applicazioni a nuovi
versioni della libreria. I problemi rilevati possono essere presi in considerazione durante l'adattamento del
applicazione a una nuova versione della libreria.
Questo strumento è un software gratuito: puoi ridistribuirlo e/o modificarlo sotto il
termini della GNU LGPL o GNU GPL.
USO:
abi-compliance-checker [opzioni]
ESEMPIO:
abi-compliance-checker -LIB NOME -vecchio VECCHIO.xml -nuovo NUOVO.xml
OLD.xml e NEW.xml sono descrittori XML:
1.0
/percorso1/a/intestazione(i)/ /percorso2/a/intestazione(i)/
...
/percorso1/della/biblioteca(e)/ /percorso2/della/libreria(e)/
...
INFORMAZIONI OPZIONI:
-h|-aiuto
Stampa questo aiuto.
-i|-informazioni
Stampa le informazioni complete.
-v|-versione
Stampa le informazioni sulla versione.
-versione dump
Stampa la versione dello strumento (1.99.14) e non fare nient'altro.
GENERALE OPZIONI:
-l|-lib|-libreria NOME
Nome della libreria (senza versione).
-d1|-vecchio|-o PERCORSO
Descrittore della prima (vecchia) versione della libreria. Potrebbe essere uno dei seguenti:
1. Descrittore XML (file VERSION.xml):
1.0
/percorso1/a/intestazione(i)/ /percorso2/a/intestazione(i)/
...
/percorso1/della/biblioteca(e)/ /percorso2/della/libreria(e)/
...
...
2. Dump ABI generato da dump opzione 3. Directory con intestazioni e/o condivisa
librerie 4. File di intestazione singola
Se stai usando un tipo di descrittore 2-4, dovresti specificare i numeri di versione
con -v1 ed -v2 anche le opzioni.
Per ulteriori informazioni, si prega di consultare:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-nuovo|-n PERCORSO
Descrittore della 2a (nuova) versione della libreria.
dump|-dump-abi PERCORSO
Crea un dump ABI della libreria per il descrittore XML di input. Puoi trasferirlo ovunque
e passare al posto del descrittore. Inoltre può essere utilizzato per il debug dello strumento.
Versioni supportate di ABI dump: 2.0<=V<=3.2
EXTRA OPZIONI:
-app|-applicazione PATH
Questa opzione consente di specificare l'applicazione che deve essere verificata
portabilità alla nuova versione della libreria.
-libs-statici
Controlla le librerie statiche invece di quelle condivise. Il sezione del
Il descrittore XML dovrebbe puntare alla posizione delle librerie statiche.
-gcc-percorso PERCORSO
Percorso al compilatore GCC incrociato da utilizzare al posto del solito GCC (host).
-gcc-prefisso PREFISSO
Prefisso della toolchain GCC.
-gcc-opzioni OPZIONI
Opzioni aggiuntive del compilatore.
-sysroot DIR
Specificare la directory principale alternativa. Lo strumento cercherà i percorsi di inclusione in
le directory DIR/usr/include e DIR/usr/lib.
-v1|-versione1 NUM
Specificare la prima versione della libreria al di fuori del descrittore. Questa opzione è necessaria se tu
hanno preferito un tipo di descrittore alternativo (vedi -d1 opzione).
In generale, dovresti specificarlo nel descrittore XML:
VERSIONE
-v2|-versione2 NUM
Specificare la seconda versione della libreria al di fuori del descrittore.
-vnum NUM
Specificare la versione della libreria nel dump ABI generato. Il sezione del
in questo caso il descrittore XML di input verrà sovrascritto.
-s|-rigorosa
Considera tutti gli avvisi di compatibilità come problemi. Aggiungi un numero di gravità "Bassa"
problemi al valore di ritorno dell'utensile.
-solo-intestazioni
Controlla i file di intestazione senza librerie condivise. È facile da eseguire, ma può fornire a
rapporto di compatibilità di bassa qualità con falsi positivi e senza rilevamento di
simboli aggiunti/rimossi.
In alternativa puoi scrivere la parola "nessuno" al sezione nel
Descrittore XML:
nessuna
-show-reval
Mostra il tipo di ritorno del simbolo nel report.
-elenco-simboli PERCORSO
Questa opzione permette di specificare un file con un elenco di simboli (nomi alterati in
C++) che dovrebbe essere controllato. Gli altri simboli non verranno controllati.
-elenco-tipi PERCORSO
Questa opzione consente di specificare un file con un elenco di tipi che dovrebbero essere
controllato. Altri tipi non verranno selezionati.
-skip-simboli PERCORSO
L'elenco dei simboli che non devono essere controllati.
-salta-tipi PERCORSO
L'elenco dei tipi che non devono essere controllati.
-elenco-intestazioni PERCORSO
Il file con un elenco di intestazioni, che dovrebbe essere controllato/scaricato.
-salta-intestazioni PERCORSO
Il file con l'elenco dei file di intestazione, che non dovrebbe essere controllato.
-intestazione NOME
Controlla/scarica l'ABI solo di questa intestazione.
-use-dump
Crea dump per due versioni di una libreria e confronta i dump. Questo dovrebbe aumentare
le prestazioni dello strumento e ridurre l'utilizzo della memoria di sistema.
-nostdin
Non cercare nelle directory di sistema standard di GCC i file di intestazione.
-sistema-discarica NOME -sysroot DIR
Trova tutte le librerie condivise e i file di intestazione nella directory DIR, crea XML
descrittori e creare dump ABI per ogni libreria. Il set di risultati dei dump ABI può essere
rispetto (--cmp-sistemi) con l'altro creato per un'altra versione di funzionamento
sistema per verificarne la compatibilità. Non dimenticare di specificare
-cross-gcc opzione se il tuo sistema di destinazione richiede una versione specifica di GCC
compilatore (diverso dal GCC host). Il dump ABI del sistema verrà generato per:
sys_dumps/NOME/ARCH
-sistema-discarica DESCRITTORE.xml
Uguale all'opzione precedente ma accetta un descrittore XML del sistema di destinazione come
input, dove dovresti descriverlo:
/* Sezioni primarie */
/* Nome del sistema */
/* L'elenco dei percorsi ai file di intestazione e/o
directory con file di intestazione, uno per riga */
/* L'elenco dei percorsi alle librerie condivise e/o
directory con librerie condivise, una per riga */
/* Sezioni opzionali */
/* Elenco delle directory da cercare
affinché i file di intestazione generino automaticamente i percorsi di inclusione, uno per riga */
/* Elenco delle directory da cercare
per le librerie condivise per risolvere le dipendenze, una per riga */
/* Elenco delle directory con gli strumenti utilizzati
per l'analisi (toolchain GCC), uno per riga */
/* Prefisso della toolchain GCC.
Consigli d'uso:
arm-linux-gnueabi arm-none-symbianelf */
/* Opzioni GCC aggiuntive, una per riga */
-sysinfo DIR
Questa opzione dovrebbe essere utilizzata con -sistema-discarica opzione per scaricare ABI di funzionamento
sistemi e configurare il processo di dumping. Puoi trovare un campione nella confezione:
moduli/Obiettivi/{unix, symbian, windows}
-sistemi cmp -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Confronta due dump ABI di sistema. Crea rapporti di compatibilità per ogni libreria e il
report HTML comune che include il riepilogo dei risultati dei test per tutte le librerie controllate.
Il rapporto sarà generato per:
sys_compat_reports/NAME1_to_NAME2/ARCH
-lista-libs PERCORSO
Il file con un elenco di librerie, che dovrebbe essere scaricato dal -sistema-discarica opzione
o dovrebbe essere controllato dal -sistemi cmp opzione.
-est|-esteso
Se la tua libreria A dovrebbe essere utilizzata da un'altra libreria B e vuoi controllare
l'ABI di B, allora dovresti abilitare questa opzione. Lo strumento verificherà le modifiche
in tutti i tipi di dati, anche se non sono utilizzati da alcuna funzione nella libreria A. Tale
i tipi di dati non fanno parte dell'ABI della libreria A, ma possono far parte dell'ABI del B
biblioteca.
Lo schema breve è:
app C (rotto) -> lib B (rotto ABI) -> lib A (stabile ABI)
-q|-silenzioso
Stampa tutti i messaggi sul file invece che su stdout e stderr. Percorso predefinito (può essere
cambiato da -log-percorso opzione):
logs/esegui.log
-Stdout
Stampa i risultati dell'analisi (report di compatibilità e dump ABI) su stdout anziché su
creazione di un file. Ciò consentirebbe di trasferire i dati ad altri programmi.
-formato-report FMT
Modifica il formato del rapporto di compatibilità. Formati:
htm - formato HTML (predefinito) xml - formato XML
-formato-dump FMT
Modifica il formato del dump ABI. Formati:
perl - Formato Data::Dumper (predefinito) xml - Formato XML
-xml
Alias per: --formato-report=xml or --formato-dump=xml
-Long LUNGO
Imposta la lingua della libreria (C o C++). Puoi usare questa opzione se lo strumento non è in grado di farlo
rilevare automaticamente una lingua. Questa opzione può essere utile per controllare le intestazioni della libreria C
(--lang=C) in --solo-intestazioni or --esteso modalità.
-arco ARCH
Imposta l'architettura della libreria (x86, x86_64, ia64, arm, ppc32, ppc64, s390, ecc.). Il
l'opzione è utile se lo strumento non è in grado di rilevare l'architettura corretta dell'input
oggetti.
-binario|-bin|-abi
Mostra solo problemi di compatibilità "Binaria". Genera rapporto su:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-fonte|-src|-api
Mostra solo problemi di compatibilità "Sorgente". Genera rapporto su:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limitato LIMITE
Il numero massimo di simboli interessati elencati nella descrizione della modifica
digitare il rapporto.
ALTRO OPZIONI:
-Test
Esegui test interni. Creare due versioni binarie incompatibili di una libreria di esempio e
eseguire lo strumento per verificarne la compatibilità. Questa opzione consente di verificare se
lo strumento funziona correttamente nell'ambiente corrente.
-discarico di prova
Testare la capacità di creare, leggere e confrontare dump ABI.
-debug
Modalità di debug. Stampa le informazioni di debug sullo schermo. Salva le fasi di analisi intermedie
nella directory di debug:
debug/NOME_LIB/VERSIONE/
Considera anche l'utilizzo di --scarico opzione per il debug dello strumento.
-cpp-compatibile
Se i tuoi file di intestazione sono scritti in linguaggio C e possono essere compilati da G++
compilatore (cioè non usare parole chiave C++), quindi puoi dire allo strumento di questo e
velocizzare l'analisi.
-cpp-incompatibile
Imposta questa opzione se i file di intestazione C di input utilizzano parole chiave C++.
-p|-params PERCORSO
Percorso del file con i nomi dei parametri della funzione. Può essere utilizzato per migliorare il rapporto
visualizza se i file di intestazione della libreria non hanno nomi di parametro. Formato del file:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PERCORSO
Sostituisci le macro {RELPATH} in PATH nel descrittore XML utilizzato per scaricare la libreria
ABI (vedi dump opzione).
-relpath1 PERCORSO
Sostituisci le macro {RELPATH} in PATH nel primo descrittore XML (-d1).
-relpath2 PERCORSO
Sostituisci le macro {RELPATH} in PATH nel secondo descrittore XML (-d2).
-discarica-percorso PERCORSO
Specificare un percorso file *.abi.tar.gz o *.abi dove generare un dump ABI. Predefinito:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-ordinare
Abilita l'ordinamento dei dati nei dump ABI.
-report-percorso PERCORSO
Percorso al rapporto di compatibilità. Predefinito:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-report-percorso PERCORSO
Percorso del rapporto di compatibilità "Binario". Predefinito:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-report-percorso PERCORSO
Percorso del rapporto di compatibilità "Origine". Predefinito:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-percorso PERCORSO
Percorso del registro per tutti i messaggi. Predefinito:
logs/LIB_NAME/VERSION/log.txt
-log1-percorso PERCORSO
Percorso del registro per la prima versione di una libreria. Predefinito:
logs/LIB_NAME/V1/log.txt
-log2-percorso PERCORSO
Percorso del registro per la seconda versione di una libreria. Predefinito:
logs/LIB_NAME/V2/log.txt
-modalità-registrazione MODE
Cambia modalità di registrazione. Modalità:
w - sovrascrive i vecchi registri (impostazione predefinita) a - aggiunge i vecchi registri n - non scrive alcun registro
-lista-affetti
Genera file con l'elenco dei simboli incompatibili accanto alla compatibilità HTML
rapporto. Usa il comando 'c++filt @file' da GNU binutils per smantellare i simboli C++ in
il file generato. Nomi predefiniti:
abi_affected.txt src_affected.txt
-componente NOME
Il nome del componente nel titolo e nel riepilogo del report HTML. Predefinito:
biblioteca
-titolo NOME
Cambia il nome della libreria nel titolo del rapporto in NAME. Per impostazione predefinita verrà visualizzato a
nome specificato da -l opzione.
-informazioni-extra DIR
Invia informazioni extra a DIR.
-extra discarica
Crea un dump ABI esteso contenente tutti i simboli dall'unità di traduzione.
-vigore
Prova a usare questa opzione se lo strumento non funziona.
-tolleranza LIVELLO
Applicare una serie di euristiche per compilare correttamente i file di intestazione di input. Puoi
abilitare più livelli di tolleranza unendoli in un'unica stringa (es. 13, 124,
eccetera.). Livelli:
1 - salta le intestazioni non Linux (es. win32_*.h, ecc.) 2 - salta le intestazioni interne (es.
*_p.h, impl/*.h, ecc.) 3 - salta le intestazioni che includono intestazioni non Linux 4 - salta
intestazioni incluse da altri
-tollerante
Abilita il livello di tolleranza più alto [1234].
-dai un'occhiata
Verificare la completezza del dump ABI.
-Presto
Analisi rapida. Disabilita il controllo di alcune istanze del modello.
-skip-simboli-interni MODELLO
Non controllare i simboli abbinati al modello.
-salta-tipi-interni MODELLO
Non controllare i tipi corrispondenti al modello.
RAPPORTO:
Il rapporto di compatibilità verrà generato per:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Il registro verrà generato per:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT CODICI:
0 - Compatibile. Lo strumento è stato eseguito senza errori. diverso da zero - Incompatibile o
lo strumento è stato eseguito con errori.
ALTRO INFORMAZIONI:
http://lvc.github.io/abi-compliance-checker/
Usa abi-compliance-checker online utilizzando i servizi onworks.net