IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

abidiff - Online nel Cloud

Esegui abidiff nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando abidiff 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


abidiff - confronta gli ABI dei file ELF

abidiff confronta le interfacce binarie applicative (ABI) di due librerie condivise in ELFO
formato. Emette un rapporto significativo che descrive le differenze tra i due ABI.

Per un report completo sulle modifiche ABI che includa modifiche su funzione e variabile
sottotipi, le due librerie condivise di input devono essere accompagnate dalle loro informazioni di debug
in NANO formato. Altrimenti, solo ELFO vengono riportati i simboli aggiunti o rimossi.

INVOCAZIONE


abidiff [opzioni]

VERSIONI


· --Aiuto | -h

Visualizza un breve aiuto sul comando ed esci.

· --versione | -v

Visualizza la versione del programma ed esci.

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

Per i casi in cui le informazioni di debug per prima-libreria-condivisa è suddiviso in a
file separato, dice adiff dove trovare quel file di informazioni di debug separato.

Si noti che di-percorso deve puntare alla directory principale in cui si trovano le informazioni di debug
è disposto ad albero. Nei sistemi basati su Red Hat, quella directory è
generalmente /usr/lib/debug.

Nota anche che questa opzione non è obbligatoria per le informazioni di debug separate installate da
il gestore di pacchetti del tuo sistema perché allora adiff sa dove trovarlo.

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

Come --debug-info-dir1, questa opzione dice adiff dove trovare il debug diviso?
informazioni per il seconda-libreria-condivisa file.

· --statistica

Piuttosto che visualizzare le differenze ABI dettagliate tra prima-libreria-condivisa ed
seconda-libreria-condivisa, mostra solo alcune statistiche di riepilogo su queste differenze.

· --symtabs

Visualizza solo le tabelle dei simboli del prima-libreria-condivisa ed seconda-libreria-condivisa.

· --deleted-fns

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le funzioni definite globalmente che sono state eliminate
da prima-libreria-condivisa.

· --cambiato-fns

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le modifiche nei sottotipi delle funzioni globali
definito in prima-libreria-condivisa.

· --aggiunto-fns

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le funzioni definite globalmente che sono state aggiunte a
seconda-libreria-condivisa.

· --deleted-vars

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le variabili definite globalmente che sono state eliminate
da prima-libreria-condivisa.

· --vari-variate

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le modifiche nei sottotipi del globale
variabili definite in prima-libreria-condivisa

· --add-vars

Nella relazione risultante sulle differenze tra prima-libreria-condivisa ed
seconda-libreria-condivisa, visualizza solo le variabili globali che sono state aggiunte (definite) a
seconda-libreria-condivisa.

· --no-nome-collegamento

Nel report risultante, non visualizzare i nomi dei collegamenti degli elementi aggiunti, rimossi o
funzioni o variabili modificate.

· --no-show-locs
Non mostrare informazioni su dove si trova il secondo condiviso biblioteca il rispettivo
tipo è stato cambiato.

· --no-simboli-non-referenziati

Nel report risultante, non visualizzare le informazioni di modifica sulla funzione e
simboli variabili a cui non fa riferimento alcuna informazione di debug. Nota che per
questi simboli non referenziati da alcuna informazione di debug, le informazioni di modifica
visualizzati sono i simboli aggiunti o rimossi.

· --soppressioni | --suppre <percorso per le soppressioni>

Utilizzare un file di specifiche di soppressione situato in percorso per le soppressioni. Nota che questo
l'opzione può apparire più volte sulla riga di comando; tutta la soppressione
vengono quindi presi in considerazione i file di specifica.

· --gocciolare <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, rilascia
le funzioni e le variabili definite globalmente il cui nome corrisponde all'espressione regolare
regex. Di conseguenza, non verrà emessa alcuna modifica che coinvolga queste funzioni o variabili
nel rapporto diff.

· --drop-fn <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, rilascia
le funzioni definite globalmente il cui nome corrisponde all'espressione regolare regex. Come un
risultato, nessuna modifica che coinvolga queste funzioni verrà emessa nel rapporto diff.

· --drop-var <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, rilascia
le variabili globalmente definite che corrispondono a un'espressione regolare regex.

· --mantenere <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, mantieni
le funzioni e le variabili definite globalmente i cui nomi corrispondono all'espressione regolare
regex. Tutte le altre funzioni e variabili vengono lasciate cadere a terra e quindi non lo faranno
appaiono nel rapporto diff risultante.

· --keep-fn <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, mantieni
le funzioni definite globalmente il cui nome corrisponde all'espressione regolare regex. Tutti
altre funzioni vengono lasciate cadere sul pavimento e quindi non appariranno nel risultato
rapporto diff.

· --keep-var <regex>

Quando si legge il prima-libreria-condivisa ed seconda-libreria-condivisa File di input ELF, mantieni
i nomi definiti globalmente che corrispondono all'espressione regolare regex. Tutti gli altri
le variabili vengono lasciate cadere sul pavimento e quindi non appariranno nella differenza risultante
rapporto.

· --innocuo

Nel rapporto diff, visualizzare solo le modifiche innocue. Per impostazione predefinita, l'innocuo
le modifiche vengono filtrate dal rapporto diff mantenere il disordine al minimo e avere un
maggiore cambiamento per individuare problemi reali di ABI.

· --no-nocivo

Nel rapporto diff, non visualizzare le modifiche dannose. Per impostazione predefinita, solo il dannoso
le modifiche vengono visualizzate nel rapporto diff.

· --ridondante

Nel rapporto diff, visualizza le modifiche ridondanti. Un cambiamento ridondante è un cambiamento
che è stato visualizzato altrove nel rapporto.

· --no-ridondante

Nel rapporto diff, fai NON visualizzare modifiche ridondanti. Un cambiamento ridondante è un cambiamento
che è stato visualizzato altrove nel rapporto. Questa opzione è attivata da
predefinito.

· --no-architettura

Non prendere in considerazione l'architettura quando si confrontano gli ABI.

· --dump-diff-albero
Dopo il rapporto diff, emetti una rappresentazione testuale dell'albero dei nodi diff usato da
il motore di confronto per rappresentare le funzioni e le variabili modificate. Quella
la rappresentazione viene emessa nell'output dell'errore per scopi di debug. Notare che
questo albero delle differenze è rilevante solo per funzioni e variabili che hanno qualche sottotipo
i cambiamenti. Le funzioni e le variabili aggiunte o rimosse non hanno alcun albero dei nodi diff
ad essi associati.

· --statistiche

Emetti statistiche su varie cose interne.

· --verboso

Emetti log dettagliati sullo stato di avanzamento di varie cose interne.

RITORNO VALORI


Il codice di uscita del adiff comando è 0 se l'ABI dei binari da confrontare
sono uguali o diversi da zero se differiscono o se lo strumento ha riscontrato un errore.

In quest'ultimo caso, il codice di uscita è un campo di bit di 8 bit in cui ogni bit ha un
significato specifico.

Il primo bit, di valore 1, denominato ABIDIFF_ERRORE significa che c'è stato un errore.

Il secondo bit, di valore 2, denominato ABIDIFF_USAGE_ERROR significa che c'era un errore nel modo
l'utente ha richiamato lo strumento. Potrebbe essere impostato, ad esempio, se l'utente ha invocato lo strumento
con un'opzione della riga di comando sconosciuta, con un numero o un argomento errato, ecc. Se questo bit è
impostare, quindi il ABIDIFF_ERRORE bit deve essere impostato pure.

Il terzo bit, di valore 4, denominato ABIDIFF_ABI_CHANGE si intende l'ABI dei binari essendo
confrontati sono diversi.

Il quarto bit, di valore 8, denominato ABIDIFF_ABI_INCOMPATIBLE_CHANGE significa l'ABI del
i binari confrontati sono diversi in modo incompatibile. Se questo bit è impostato, allora il
ABIDIFF_ABI_CHANGE bit deve essere impostato pure. Se la ABIDIFF_ABI_CHANGE è impostato e il
ABIDIFF_INCOMPATIBILE_CHANGE is NON impostato, allora significa che gli ABI confrontati potrebbero
o potrebbe non essere compatibile. In tal caso, un essere umano ha bisogno di rivedere le modifiche ABI
per decidere se sono compatibili o meno.

I bit rimanenti non vengono utilizzati per il momento.

USO ESEMPI


1. Rilevamento di un cambiamento in un sottotipo di una funzione:

$ cat -n prova-v0.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 struttura S0
5 {
6int m0;
7};
8
9 nulla
10 pippo(S0* /*nome_parametro*/)
11 {
12 // fai qualcosa con parametro_name.
13}
$
$ cat -n prova-v1.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 struttura tipo_base
5 {
6 int inserito;
7};
8
9 struct S0 : tipo_base pubblico
10 {
11int m0;
12};
13
14 nulla
15 pippo(S0* /*nome_parametro*/)
16 {
17 // fai qualcosa con parametro_name.
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
Riepilogo delle modifiche alle funzioni: 0 Rimosso, 1 Modificato, 0 Funzione aggiunta
Riepilogo modifiche variabili: 0 Rimosso, 0 Modificato, 0 Variabile aggiunta

1 funzione con qualche modifica indiretta del sottotipo:

[C]'function void foo(S0*)' presenta alcune modifiche indirette di sottotipo:
il parametro 0 di tipo 'S0*' presenta modifiche di sottotipo:
in puntato al tipo 'struct S0':
dimensione modificata da 32 a 64 bit
1 inserimento classe base:
struttura tipo_base
1 modifica del membro dati:
'int S0::m0' offset cambiato da 0 a 32
$

2. Rilevamento di un'altra modifica in un sottotipo di una funzione:

$ cat -n prova-v0.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 struttura S0
5 {
6int m0;
7};
8
9 nulla
10 pippo(S0& /*nome_parametro*/)
11 {
12 // fai qualcosa con parametro_name.
13}
$
$ cat -n prova-v1.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 struttura S0
5 {
6 caratteri inserito_membro;
7int m0;
8};
9
10 nulla
11 pippo(S0& /*nome_parametro*/)
12 {
13 // fai qualcosa con parametro_name.
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
Riepilogo delle modifiche alle funzioni: 0 Rimosso, 1 Modificato, 0 Funzione aggiunta
Riepilogo modifiche variabili: 0 Rimosso, 0 Modificato, 0 Variabile aggiunta

1 funzione con qualche modifica indiretta del sottotipo:

[C]'function void foo(S0&)' presenta alcune modifiche indirette di sottotipo:
il parametro 0 di tipo 'S0&' ha modifiche di sottotipo:
nel tipo di riferimento 'struct S0':
dimensione modificata da 32 a 64 bit
Inserimento 1 membro dati:
'char S0::insert_member', all'offset 0 (in bit)
1 modifica del membro dati:
'int S0::m0' offset cambiato da 0 a 32

$

3. Rilevare che le funzioni sono state rimosse o aggiunte a una libreria:

$ cat -n prova-v0.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v0.so test-v0.cc
3
4 struttura S0
5 {
6int m0;
7};
8
9 nulla
10 pippo(S0& /*nome_parametro*/)
11 {
12 // fai qualcosa con parametro_name.
13}
$
$ cat -n prova-v1.cc
1 // Compila questo con:
2 // g++ -g -Wall -shared -o libtest-v1.so test-v1.cc
3
4 struttura S0
5 {
6 caratteri inserito_membro;
7int m0;
8};
9
10 nulla
11 bar(S0& /*nome_parametro*/)
12 {
13 // fai qualcosa con parametro_name.
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
Riepilogo delle modifiche alle funzioni: 1 Rimosso, 0 Modificato, 1 Funzioni aggiunte
Riepilogo modifiche variabili: 0 Rimosso, 0 Modificato, 0 Variabile aggiunta

1 Funzione rimossa:
'funzione void foo(S0&)' {_Z3fooR2S0}

1 Funzione aggiunta:
'funzione void bar(S0&)' {_Z3barR2S0}

$

Utilizzare abidiff online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

  • 1
    facetrack noir
    facetrack noir
    Programma headtracking modulare che
    supporta più face tracker, filtri
    e protocolli di gioco. Tra i tracker
    sono SM FaceAPI, AIC Inertial Head
    Inseguitore...
    Scarica facetrack noir
  • 2
    Codice QR PHP
    Codice QR PHP
    Il codice QR PHP è open source (LGPL)
    libreria per la generazione di QR Code,
    Codice a barre bidimensionale. Basato su
    libreria libqrencode C, fornisce API per
    creazione barra QR Code...
    Scarica codice QR PHP
  • 3
    freeciv
    freeciv
    Freeciv è un gioco a turni gratuito
    gioco di strategia multiplayer, in cui ciascuno
    giocatore diventa il leader di a
    civiltà, lottando per ottenere il
    obiettivo finale: diventare...
    Scarica Freeciv
  • 4
    Sandbox cuculo
    Sandbox cuculo
    Cuckoo Sandbox utilizza i componenti per
    monitorare il comportamento del malware in a
    Ambiente sandbox; isolato dal
    resto del sistema. Offre automatizzato
    analisi o...
    Scarica Cuckoo Sandbox
  • 5
    LMS-YouTube
    LMS-YouTube
    Riproduci video di YouTube su LMS (porting di
    Triode's to YouTbe API v3) Questo è
    un'applicazione che può anche essere recuperata
    da
    https://sourceforge.net/projects/lms-y...
    Scarica LMS-YouTube
  • 6
    Fondazione per la presentazione di Windows
    Fondazione per la presentazione di Windows
    Fondazione presentazione Windows (WPF)
    è un framework dell'interfaccia utente per la creazione di Windows
    applicazioni desktop. WPF supporta a
    ampio set di sviluppo di applicazioni
    Caratteristiche...
    Scarica Windows Presentation Foundation
  • Di Più "

Comandi Linux

Ad