Monday 13 November 2017

Binarie Options Objdump Smonta Braccio -


Im cercando di smontare un oggetto costruito per ARM con gcc. Purtroppo, objdump sta cercando di indovinare se il codice è ARM e Thumb, ed è sempre sbagliato: si pensa che il mio codice è pollice quando la sua realtà braccio. Vedo che objdump ha un'opzione per costringerlo a interpretare tutte le istruzioni come Thumb (-Mforce-pollice), ma doesnt avere uno per forzare la modalità ARM Questo mi sembra un omissione davvero strano per me, e la sua seriamente ostacolando la mia capacità di ottenere lavoro svolto (Im su un dispositivo embedded e il mio unico mezzo di debug è quello di esaminare lo smontaggio). Ive ha provato vari approcci, tra cui cercando di dire objdump di utilizzare un'architettura ARM che pretende molto sostegno del pollice, ma nulla sembra funzionare. Tutte le idee (e sì, lo so che le istruzioni sono davvero ARM.) Ha chiesto 25 ago 11 in 16:43 Questo suona come un insetto in entrambi compilerlinker o objdump. Normalmente i simboli dovrebbero essere contrassegnati correttamente se theyre pollice o ARM e smontati conseguenza. Detto questo, ce n'è un paio di cose che puoi provare: file come semplice binario (-D binario - b) interpretare - questo disabiliterà simbolo controllo e sarà smontare tutto il file come ARM. Unico inconveniente: un sacco di spazzatura in uscita, non belle indirizzi. usare IDA Pro. Anche se indovina in modo non corretto, si può sempre ignorare la sua decisione. Inoltre, è un ambiente di smontaggio molto più bello :) risposto 25 ago 11 in 16:56 Ho bisogno di informazioni sui simboli e so cosa I39m guardando, in modo da utilizzare doesn39t binario grezzo tagliare, I39m paura. Il file in questione non dispone di informazioni di debug quindi le informazioni di marcatura dovrebbe essere lì. Il mio processo di compilazione è complicata, ma non comporta gcc durante tutte le idee che cosa potrebbe essere Escludendo la marcatura ndash David simbolo raffigurato 26 11 agosto a 10:42 It39s difficile dire what39s è esattamente il problema. Stampa il contenuto della tabella dei simboli e dare un'occhiata a printinsn (braccio) in braccio dis. c. Forse che vi darà qualche idea. ndash Igor Skochinsky 26 agosto 11 a 13: 30objdump (1) - Linux pagina man Descrizione objdump visualizza informazioni su uno o più file oggetto. Le opzioni controllano quale particolare le informazioni da visualizzare. Questa informazione è particolarmente utile per i programmatori che stanno lavorando ai tool di compilazione, al contrario di programmatori che vogliono solo il loro programma per compilare e lavoro. objfile. sono i file oggetto da esaminare. Quando si specifica archivi, objdump sono riportate le informazioni su ciascuno dei file oggetto membro. Le forme lunghe e corte di opzioni, qui mostrate come alternative, sono equivalenti. Almeno un opzione dalla lista - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - r, - R, - s, - S, - t, - T, - V, - x deve essere data. - a --archive-header Se uno qualsiasi dei file objfile sono archivi, visualizzare le informazioni di intestazione archivio (in un formato simile a ls - l). Oltre alle informazioni è possibile elencare con tv ar. objdump - a mostra il formato di file oggetto di ogni membro dell'archivio. --adjust-VMA compensate quando il dumping informazioni, aggiungere prima offset per tutti gli indirizzi di sezione. Questo è utile se gli indirizzi sezione non corrispondono alla tabella dei simboli, che può accadere quando mettere sezioni a particolari indirizzi quando si utilizza un formato che non può rappresentare gli indirizzi di sezione, come ad esempio a. out. - b bfdname --target bfdname specificare che il formato object-code per i file oggetto è bfdname. Questa opzione potrebbe non essere necessaria objdump in grado di riconoscere automaticamente molti formati. Ad esempio, visualizza le informazioni di riepilogo delle intestazioni di sezione (H) di fu. o. che è esplicitamente identificato (-m) come file oggetto VAX nel formato prodotto da compilatori Oasys. Si possono elencare i formati disponibili con l'opzione - i. - C Decode --demangle stile (demangle) i nomi dei simboli di basso livello in nomi a livello utente. Oltre a rimuovere ogni underscore iniziale aggiunto dal sistema, questo rende nomi di funzioni C leggibile. Diversi compilatori hanno differenti stili di codifica. L'argomento opzionale dello stile di decodifica può essere usato per scegliere uno stile appropriato di decodifica per il proprio compilatore. - g --debugging display informazioni di debug. Questo tenta di analizzare coltellate e IEEE informazioni sul formato di debug memorizzate nel file e stamparlo utilizzando una C come sintassi. Se nessuno di questi formati si trovano questa opzione ricade l'opzione - W per stampare tutte le informazioni NANO nel file. - e --debugging-tag come - g. ma l'informazione è generato in un formato compatibile con lo strumento ctags. - d display --disassemble mnemonici assembler per le istruzioni macchina da objfile. Questa opzione smonta solo quelle sezioni che dovrebbero contenere le istruzioni. - D --disassemble-All - d come. ma disassemblare il contenuto di tutte le sezioni, non solo quelli attesi per contenere istruzioni. Se il bersaglio è un'architettura ARM questo interruttore ha anche l'effetto di costringere il disassembler per decodificare frammenti di dati presenti nelle sezioni di codice come se fossero istruzioni. --prefix indirizzi Quando si smonta, stampare l'indirizzo completo su ogni riga. Questo è il formato di smontaggio più vecchio. - EB - EL --endian Specificare il endianness dei file oggetto. Questo riguarda solo lo smontaggio. Questo può essere utile quando smontare un formato di file che non descrive le informazioni endianness, come S-record. - f --file-header informazioni Display dall'intestazione complessiva di ciascuno dei file objfile. - F --file-Offset durante lo smontaggio sezioni, ogni volta che viene visualizzato un simbolo, mostrano anche il file di offset della regione di dati che è in procinto di essere oggetto di dumping. Se zeri vengono ignorati, poi quando lo smontaggio riprende, dire all'utente quanti zeri erano saltati e il file di offset del luogo da dove il disassemblaggio riprende. Quando scaricate sezioni, visualizzare il file di offset della posizione da cui inizia la discarica. --file-start-contesto di specificare che, quando la visualizzazione di fonte interlisted codedisassembly (assume - S) da un file che non è ancora stato visualizzato, estendere il contesto per l'inizio del file. - h --section-headers --headers informazioni Display dalle intestazioni di sezione del file oggetto. segmenti di file possono essere trasferiti a indirizzi non standard, ad esempio utilizzando il - Ttext. - Tdata. o opzioni - Tbss per ld. Tuttavia, alcuni formati di file oggetto, come ad esempio a. out, non conservare l'indirizzo iniziale dei segmenti di file. In tali situazioni, anche se ld trasferisce correttamente sezioni, utilizzando objdump - h per elencare le intestazioni di sezione del file non può mostrare gli indirizzi corretti. Invece, mostra i soliti indirizzi, impliciti per la destinazione. - H --help Stampa un riepilogo delle opzioni per objdump e uscire. - i --info Visualizza una lista che mostra tutte le architetture ei formati oggetto disponibili per la specifica con - b o - m. - j nome --section informazioni Nome visualizzato solo per nome della sezione. - l --line-numeri di etichette di display (utilizzando le informazioni di debug) con i numeri di nome file e di linea della sorgente corrispondente al codice oggetto o relocs mostrato. Utile solo con - d. - D. o - R. - m macchina --architecture macchina Specificare l'architettura da utilizzare durante lo smontaggio file oggetto. Questo può essere utile quando smontare file oggetto che non descrivono le informazioni di architettura, come la S-record. Si possono elencare le architetture disponibili con l'opzione - i. Se il bersaglio è un'architettura ARM allora questo interruttore ha un effetto aggiuntivo. Esso limita lo smontaggio ai soli istruzioni supportate dall'architettura specificato da macchina. Se è necessario utilizzare questo interruttore perché il file di input non contiene alcuna informazione architettura, ma è anche desiderato di smontare tutte le istruzioni utilizzano - marm. opzioni - M --disassembler-opzioni di opzioni di passare informazioni specifiche destinazione al disassemblatore. Supportato solo su alcuni obiettivi. Se è necessario specificare più di una opzione disassembler quindi più opzioni - M possono essere utilizzati o possono essere messi insieme in un elenco separato da virgole. Se il bersaglio è un'architettura ARM allora questo interruttore può essere usato per selezionare quale registrare il nome impostato viene utilizzato durante disassembler. Specificando - M Reg-nomi-STD (il default) selezionerà i nomi di registro ed usati in ARM s documentazione set di istruzioni, ma con il registro 13 chiamato sp, registrare 14 chiamato lr e registrare 15 chiamato pc. Specificando - M Reg-nomi-APC potranno selezionare il set di nome utilizzato dal ARM Procedure Call standard, ma devono specificare - M REG-nomi-prime vi basta usare R seguito dal numero di registro. Ci sono anche due varianti sul registro APCS denominazione schema abilitato per - M REG-nomi-atpcs e - M REG-nomi-special-atpcs che utilizzano le convenzioni di denominazione procedura ARMThumb chiamata standard. (In entrambi i casi con i nomi di registro normali oi nomi apposito registro). Questa opzione può essere utilizzata anche per le architetture ARM per forzare il disassembler di interpretare tutte le istruzioni come istruzioni Thumb utilizzando l'interruttore --disassembler-optionsforce-pollice. Ciò può essere utile quando si tenta di disassemblare codice pollice prodotte da altri compilatori. Per il 86, alcune delle opzioni duplicare funzioni dello switch - m, ma consentono un controllo più granulare. Più selezioni dal seguente possono essere specificati come una stringa separato da virgole. x86-64. i386 e i8086 selezionare lo smontaggio previsti per l'architettura. Intel e att scegliere tra la modalità sintassi Intel e modalità di sintassi ATampT. intel-mnemonico e ATT-mnemonico selezionare tra la modalità mnemonico Intel e modalità mnemonico ATampT. intel-mnemonico implica Intel e att-mnemonico implica att. addr64. addr32. addr16. data32 e DATO16 specificare il formato indirizzo predefinito e la dimensione degli operandi. Queste quattro opzioni saranno sovrascritte se x86-64. i386 o i8086 compaiono più tardi nella stringa di opzione. Infine, il suffisso. in modalità ATampT, istruisce il disassembler per stampare un suffisso mnemonico anche quando il suffisso potrebbe essere dedotto dalle operandi. Per PowerPC, booke controlla lo smontaggio delle istruzioni Booke. 32 e 64 selezionare PowerPC e PowerPC64 lo smontaggio, rispettivamente. e300 seleziona lo smontaggio per la famiglia e300. 440 seleziona lo smontaggio per i PowerPC 440. PPCP seleziona lo smontaggio per le singole istruzioni accoppiati del PPC750CL. Per MIPS. Questa opzione controlla la stampa di nomi mnemonici istruzione e registrare i nomi di istruzioni smontati. Più selezioni dal seguente possono essere specificati come una stringa separati da virgola, e le opzioni non valide vengono ignorate: no-alias Stampa mnemonico istruzioni prima al posto di qualche mnemonico istruzioni pseudo. Cioè daddu stampa o o al posto di movimento, SLL invece di nop, ecc GPR-nomi ABI Stampa GPR (registro di uso generale) nomi come appropriato per l'ABI specificato. Per impostazione predefinita, i nomi GPR vengono selezionati secondo l'ABI del binario essere smontato. fpr-nomi ABI Stampa FPR (registro in virgola mobile) nomi come appropriato per l'ABI specificato. Per impostazione predefinita, i numeri FPR sono stampati piuttosto che nomi. CP0 nomi ARCH Stampa CP0 (controllo del sistema coprocessore coprocessore 0) registrare i nomi a seconda della CPU o l'architettura specificata da ARCH. Per impostazione predefinita, i nomi dei registri CP0 vengono selezionati secondo l'architettura e la CPU dell'essere binario smontato. HWR nomi ARCH Stampa HWR (registro hardware, usato dall'istruzione rdhwr) nomi a seconda della CPU o l'architettura specificata da ARCH. Per impostazione predefinita, i nomi HWR vengono selezionati secondo l'architettura e la CPU dell'essere binario smontato. Reg-nomi ABI Stampa GPR e nomi FPR come appropriato per l'ABI selezionato. Reg-nomi ARCH stampa i nomi dei registri specifici della CPU (CP0 registrati e nomi HWR) a seconda dei casi per la CPU o l'architettura selezionata. Per una delle opzioni sopra elencate, ABI o ARCH può essere specificato come numerico per stampare i numeri piuttosto che i nomi, per i tipi selezionati di registri. Si possono elencare i valori disponibili di ABI e ARCH utilizzando l'opzione --help. Per VAX. è possibile specificare gli indirizzi di ingresso funzione con ingresso - M: 0xf00ba. È possibile utilizzare questo più volte di smontare correttamente i file binari VAX che dont contenere tabelle dei simboli (come la ROM discariche). In questi casi, la maschera di inserimento funzione altrimenti essere decodificato come istruzioni VAX che probabilmente portare il resto della funzione scorrettamente smontato. - p --private-headers le informazioni di stampa che è specifico per il formato di file oggetto. Le informazioni esatte stampato dipende dal formato di file oggetto. Per alcuni formati di file oggetto, nessuna informazione aggiuntiva viene stampato. - r --reloc stampare le voci di trasferimento del file. Se usato con - d o - D. le delocalizzazioni sono stampati intervallati con lo smontaggio. - R --dynamic-Reloc Stampa le voci di trasferimento dinamiche del file. Questo è significativo solo per gli oggetti dinamici, come certi tipi di librerie condivise. Per quanto riguarda - r. se utilizzato con - d o - D. le delocalizzazioni sono stampati intervallati con lo smontaggio. - s --full-contenuti da visualizzare l'intero contenuto di tutte le sezioni richieste. Per impostazione predefinita, vengono visualizzate tutte le sezioni non vuoti. - S --source Codice sorgente di visualizzazione mescolati con lo smontaggio, se possibile. Implica - d. prefix prefisso Specifica il prefisso da aggiungere ai percorsi assoluti quando viene utilizzato con - S. livello --prefix-strip indicare quanti nomi delle directory iniziali a spogliarvi lo percorsi assoluti cablati. Non ha alcun effetto senza --prefix prefisso. --show-raw-insn Quando smontaggio istruzioni, stampare le istruzioni in esadecimale come pure in forma simbolica. Questa è l'impostazione predefinita, tranne quando viene utilizzato --prefix-indirizzi. --no-show-raw-insn Quando si smonta le istruzioni, non stampare i byte di istruzioni. Questa è l'impostazione predefinita quando viene utilizzato --prefix-indirizzi. --insn larghezza byte larghezza di visualizzazione su una singola linea durante lo smontaggio istruzioni. - WlLiaprmfFsoR --dwarfrawline, Decodedline, informazioni, abbrev, pubnames, aranges, macro, telai, cornici-interp, str, LOC, intervalli di visualizzare il contenuto delle sezioni debug nel file, se presenti. Se una delle lettere o parole opzionali segue l'interruttore poi verranno scaricati solo i dati si trovano in quelle sezioni specifiche. --stabs - G Visualizza l'intero contenuto di tutte le sezioni richieste. Visualizzare il contenuto della. stab e. stab. index e. stab. excl sezioni da un file ELF. Questo è utile solo su sistemi (come Solaris 2.0) in cui. stab debug voci di tabelle di simboli si svolgono in una sezione ELF. Nella maggior parte degli altri formati di file, le voci di tabelle di simboli di debug sono intercalati con i simboli di collegamento, e sono visibili nell'output --syms. --start-indirizzo avviare la visualizzazione dei dati all'indirizzo specificato. Questo influisce sull'uscita del - d. - r - s e opzioni. --stop-indirizzo Fermare la visualizzazione dei dati all'indirizzo specificato. Questo influisce sull'uscita del - d. - r - s e opzioni. - t --syms stampare le voci della tabella dei simboli del file. Questo è simile alle informazioni fornite dal programma nm, anche se il formato di visualizzazione è diverso. Il formato dell'output dipende dal formato del file oggetto di dumping, ma ci sono due tipi principali. Si guarda in questo modo: dove il numero all'interno delle parentesi quadre è il numero della voce nella tabella dei simboli, il numero di secondi è il numero della sezione, il valore fl sono i bit simboli di bandiera, il numero di Ty è il tipo di simboli, SCL numero è la classe simboli stoccaggio e il valore nx è il numero di voci auxilary associato al simbolo. Gli ultimi due campi sono il valore simboli e il suo nome. L'altro formato di output comune, di solito visto con i file in base ELF, si presenta così: Ecco il primo numero è il valore di simboli (talvolta riferito come il suo indirizzo). Il campo successivo è in realtà un insieme di caratteri e spazi indicanti i flag bit impostati sul simbolo. Questi personaggi sono descritti di seguito. Avanti è la sezione con la quale il simbolo è associato o ABS se la sezione è assoluta (cioè non in contatto con qualsiasi sezione), o UND se la sezione si fa riferimento nel file oggetto di dumping, ma non definito lì. Dopo il nome della sezione viene altro campo, un numero, che per simboli comuni è l'allineamento e per altro simbolo è la dimensione. Infine viene visualizzato il nome simboli. I caratteri bandiera sono divisi in 7 gruppi come segue: l Il simbolo è un locale (l), globale (g), univoco globale (u), né globale nè locale (uno spazio) o entrambi globali e locali (). Un simbolo può essere né locale o globale per una varietà di ragioni, ad esempio perché viene utilizzato per il debugging, ma è probabilmente un'indicazione di un errore se è sempre locale e globale. simboli globali unici sono un'estensione GNU al set standard di attacchi di simboli ELF. Per tale simbolo il linker dinamico farà in modo che in tutto il processo non è solo un simbolo con questo nome e il tipo in uso. Il simbolo è debole (w) o forte (uno spazio). Il simbolo denota un costruttore (C) o un simbolo ordinaria (uno spazio). Il simbolo è un avvertimento (W) o un simbolo normale (uno spazio). Un nome di simboli di avviso è un messaggio da visualizzare se il simbolo segue il simbolo di avvertimento è sempre Esempi referenced. Linux objdump comando (smontare un file binario) objdump comando in Linux viene utilizzato per fornire informazioni approfondite sul file oggetto. Questo comando è utilizzato principalmente dai programmatori che lavorano su compilatori, ma ancora la sua uno strumento molto utile per i programmatori normali, anche quando si tratta di debug. In questo articolo, capiremo come utilizzare il comando objdump attraverso alcuni esempi. Sintassi di base di objdump è: Vi è una vasta gamma di opzioni disponibili per questo comando. Cercheremo di coprire una buona quantità di loro in questo tutorial. Il file binario ELF del seguente programma C è utilizzato in tutti gli esempi citati in questo articolo. Nota: Quanto sopra è solo un codice di prova che veniva utilizzato per altri scopi, ma ho trovato abbastanza semplice da utilizzare per questo articolo. 1. Visualizzare il contenuto del file di intestazione generale utilizzando l'opzione - f Si consideri il seguente esempio: Così vediamo che le informazioni relative all'intestazione complessiva file è stato mostrato in uscita. NOTA: Il formato eseguibile utilizzato negli esempi è ELF. Per saperne di più, fare riferimento al nostro articolo sul formato di file ELF. 2.Display oggetto formato specifico contenuto intestazione del file usando l'opzione - p L'esempio seguente stampa le informazioni specifiche formato di file oggetto. 3. Visualizzare il contenuto delle intestazioni di sezione con opzione - h Ci possono essere varie sezioni in un file oggetto. Informazioni relative ad essi può essere stampato utilizzando l'opzione - h. Gli esempi che seguono mostrano varie sezioni. Come potete vedere ci sono un totale di 26 (solo l'uscita parziale è mostrato qui). Così vediamo che le informazioni relative a tutte le intestazioni di sezione appare in uscita. In uscita sopra, la dimensione è la dimensione della sezione di carico, VMA rappresenta l'indirizzo di memoria virtuale, LMA rappresenta l'indirizzo di memoria logico, file fuori è questo section8217s compensato a partire dall'inizio del file, ALGN rappresenta l'allineamento, CONTENUTI, ALLOC, CARICO , READONLY, i dati sono bandiere che rappresentano che una sezione particolare è quello di essere caricato o 'in sola lettura, ecc 4. visualizzare il contenuto di tutte le intestazioni con - x opzione Informazioni relative a tutte le intestazioni nel file oggetto possono essere recuperati utilizzando il - x opzione. L'esempio seguente mostra tutte le sezioni (solo per l'uscita parziale è mostrato qui): 5. CONTENUTO display assemblatore di sezioni eseguibili utilizzando l'opzione - d Si consideri il seguente esempio. I contenuti assemblatore di sezioni eseguibili (nel file oggetto) vengono visualizzati in questa uscita (uscita parziale illustrato di seguito): 6. contenuto del display assemblatore di tutte le sezioni che utilizzano - D opzione Nel caso in cui il contenuto assemblatore di tutte le sezioni è richiesto in uscita, l'opzione - D può essere utilizzato. Si consideri il seguente output: Così vediamo che è stata esposta la relativa uscita. Dal momento che l'uscita è stata molto lunga, quindi ho ritagliato esso. Si noti che ho usato il comando cercapersone per controllare l'uscita. 7. Visualizzare il contenuto completo di tutte le sezioni utilizzando l'opzione - s Si consideri il seguente esempio: Così vediamo che il contenuto completo per tutte le sezioni sono state esposte in uscita. 8. Visualizzazione delle informazioni di debug usando l'opzione - g Si consideri il seguente esempio: Così vediamo che tutte le informazioni di debug disponibili è stato stampato in uscita. 9. Visualizzare il contenuto della tabella dei simboli (o tabelle) utilizzando l'opzione - t Si consideri il seguente esempio: Così vediamo che il contenuto della tabella dei simboli sono stati esposti in uscita. 10. visualizzare il contenuto della tabella di simboli dinamica utilizzando l'opzione - T simboli dinamici sono quelli che vengono risolti in fase di esecuzione. Le informazioni relative a questi simboli possono essere recuperate utilizzando l'opzione - D. Si consideri il seguente esempio: Così vediamo che le informazioni relative ai simboli dinamici è stato visualizzato in uscita. 11. visualizzare le voci di trasferimento dinamiche nel file utilizzando l'opzione - R Si consideri il seguente esempio: così vediamo che tutte le voci di trasferimento dinamiche sono state esposte in uscita. 12. sezione Visualizzazione di interesse utilizzando opzione - j Ciò è estremamente utile quando si conosce la sezione relativa ai quali è richiesta l'informazione. Il - j opzione viene utilizzata in questo caso. Si consideri il seguente esempio: Così vediamo che le informazioni relative alla sezione Rodata è stato visualizzato sopra. 13. Utilizzare il formato di smontaggio vecchio utilizzando l'opzione 8211prefix indirizzi Il vecchio formato stampa l'indirizzo completo su ogni riga. Si consideri il seguente esempio: Così vediamo che l'indirizzo completo sono state stampate in uscita. 14. Accettare le opzioni di input da un file utilizzando l'opzione Se si desidera, le opzioni per objdump può essere letto da un file. Questo può essere fatto utilizzando 82.168.217 opzione. Si consideri il seguente esempio: In questo esempio sopra, ho usato le opzioni - v e - i. Mentre - v viene utilizzato per stampare le informazioni sulla versione, - i viene utilizzato per fornire i formati di oggetto supportati e architetture. Ora ho creato un file e aggiungere queste due opzioni lì. Eseguire il objdump chiamando il file options. txt come illustrato di seguito. Questo visualizza lo stesso output come sopra, come si sta leggendo le opzioni dal options. txt file. objdump visualizza informazioni su uno o più file oggetto. Le opzioni controllano quale particolare le informazioni da visualizzare. Questa informazione è particolarmente utile per i programmatori che stanno lavorando ai tool di compilazione, al contrario di programmatori che vogliono solo il loro programma per compilare e lavoro. objfile. sono i file oggetto da esaminare. Quando si specifica archivi, objdump sono riportate le informazioni su ciascuno dei file oggetto membro. Le forme lunghe e corte di opzioni, qui mostrate come alternative, sono equivalenti. Almeno un opzione dalla lista - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - P, - r, - R, - s, - S, - t, - T, - V, - x deve essere data. - a --archive-header Se uno qualsiasi dei file objfile sono archivi, visualizzare le informazioni di intestazione archivio (in un formato simile a ls - l). Oltre alle informazioni è possibile elencare con tv ar, objdump - a mostra il formato di file oggetto di ogni membro dell'archivio. --adjust-VMA compensate quando il dumping informazioni, aggiungere prima offset per tutti gli indirizzi di sezione. Questo è utile se gli indirizzi sezione non corrispondono alla tabella dei simboli, che può accadere quando mettere sezioni a particolari indirizzi quando si utilizza un formato che non può rappresentare gli indirizzi di sezione, come ad esempio a. out. - b bfdname --target bfdname specificare che il formato object-code per i file oggetto è bfdname. Questa opzione potrebbe non essere necessaria objdump in grado di riconoscere automaticamente molti formati. visualizza le informazioni di riepilogo delle intestazioni di sezione (H) di fu. o. che è esplicitamente identificato (-m) come file oggetto VAX nel formato prodotto da compilatori Oasys. Si possono elencare i formati disponibili con l'opzione - i. Vedere Target Selection. per maggiori informazioni. - C Decode --demangle stile (demangle) i nomi dei simboli di basso livello in nomi a livello utente. Oltre a rimuovere ogni underscore iniziale aggiunto dal sistema, questo rende nomi di funzioni C leggibile. Diversi compilatori hanno differenti stili di codifica. L'argomento opzionale dello stile di decodifica può essere usato per scegliere uno stile appropriato di decodifica per il proprio compilatore. Vedi cfilt. Per ulteriori informazioni su di decodifica. - g --debugging display informazioni di debug. Questo tenta di analizzare coltellate e IEEE informazioni sul formato di debug memorizzate nel file e stamparlo utilizzando una C come sintassi. Se nessuno di questi formati si trovano questa opzione ricade l'opzione - W per stampare tutte le informazioni NANO nel file. - e --debugging-tag come - g. ma l'informazione è generato in un formato compatibile con lo strumento ctags. - d display --disassemble mnemonici assembler per le istruzioni macchina da objfile. Questa opzione smonta solo quelle sezioni che dovrebbero contenere le istruzioni. - D --disassemble-All - d come. ma disassemblare il contenuto di tutte le sezioni, non solo quelli attesi per contenere istruzioni. Questa soluzione ha anche un effetto sottile sulla smontaggio di istruzioni in sezioni di codice. Quando l'opzione - d è attiva objdump assumerà che tutti i segni presenti in una sezione di codice si verificano sul confine tra le istruzioni e rifiuterà di smontare attraverso tale limite. Quando l'opzione - D è in effetti però questa ipotesi è soppressa. Ciò significa che è possibile per l'uscita di - d e - D per diverso se, per esempio, i dati vengono memorizzati in sezioni di codice. Se il bersaglio è un'architettura ARM questo interruttore ha anche l'effetto di costringere il disassembler per decodificare frammenti di dati presenti nelle sezioni di codice come se fossero istruzioni. --prefix indirizzi Quando si smonta, stampare l'indirizzo completo su ogni riga. Questo è il formato di smontaggio più vecchio. - EB - EL --endian Specificare il endianness dei file oggetto. Questo riguarda solo lo smontaggio. Questo può essere utile quando smontare un formato di file che non descrive le informazioni endianness, come S-record. - f --file-header informazioni Display dall'intestazione complessiva di ciascuno dei file objfile. - F --file-Offset durante lo smontaggio sezioni, ogni volta che viene visualizzato un simbolo, mostrano anche il file di offset della regione di dati che è in procinto di essere oggetto di dumping. Se zeri vengono ignorati, poi quando lo smontaggio riprende, dire all'utente quanti zeri erano saltati e il file di offset del luogo da dove il disassemblaggio riprende. Quando scaricate sezioni, visualizzare il file di offset della posizione da cui inizia la discarica. --file-start-contesto di specificare che, quando la visualizzazione di fonte interlisted codedisassembly (assume - S) da un file che non è ancora stato visualizzato, estendere il contesto per l'inizio del file. - h --section-headers --headers informazioni Display dalle intestazioni di sezione del file oggetto. segmenti di file possono essere trasferiti a indirizzi non standard, ad esempio utilizzando il - Ttext. - Tdata. o opzioni - Tbss per ld. Tuttavia, alcuni formati di file oggetto, come ad esempio a. out, non conservare l'indirizzo iniziale dei segmenti di file. In tali situazioni, anche se ld trasferisce correttamente sezioni, utilizzando objdump - h per elencare le intestazioni di sezione del file non può mostrare gli indirizzi corretti. Invece, mostra i soliti indirizzi, impliciti per la destinazione. Nota, in alcuni casi è possibile che una sezione di avere sia la READONLY e NOREAD attributi set. In tali casi, l'attributo NOREAD ha la precedenza, ma objdump riporterà sia in quanto l'impostazione esatta dei bit di flag potrebbe essere importante. - H --help Stampa un riepilogo delle opzioni per objdump e uscire. - i --info Visualizza una lista che mostra tutte le architetture ei formati oggetto disponibili per la specifica con - b o - m. - j nome --section informazioni Nome visualizzato solo per nome della sezione. - l --line-numeri di etichette di display (utilizzando le informazioni di debug) con i numeri di nome file e di linea della sorgente corrispondente al codice oggetto o relocs mostrato. Utile solo con - d. - D. o - R. - m macchina --architecture macchina Specificare l'architettura da utilizzare durante lo smontaggio file oggetto. Questo può essere utile quando smontare file oggetto che non descrivono le informazioni di architettura, come la S-record. Si possono elencare le architetture disponibili con l'opzione - i. Se il bersaglio è un'architettura ARM allora questo interruttore ha un effetto aggiuntivo. Esso limita lo smontaggio ai soli istruzioni supportate dall'architettura specificato da macchina. Se è necessario utilizzare questo interruttore perché il file di input non contiene alcuna informazione architettura, ma è anche desiderato di smontare tutte le istruzioni utilizzano - marm. opzioni - M --disassembler-opzioni di opzioni di passare informazioni specifiche destinazione al disassemblatore. Supportato solo su alcuni obiettivi. Se è necessario specificare più di una opzione disassembler quindi più opzioni - M possono essere utilizzati o possono essere messi insieme in un elenco separato da virgole. Se il bersaglio è un'architettura ARM allora questo interruttore può essere usato per selezionare quale registrare il nome impostato viene utilizzato durante disassembler. Specificando - M Reg-nomi-STD (il default) selezionerà i nomi di registro ed usati nella documentazione set di istruzioni ARM, ma con il registro 13 chiamato sp, registrare 14 chiamato lr e registrare 15 chiamato pc. Specificando - M Reg-nomi-APC potranno selezionare il set di nome utilizzato dal ARM Procedure Call standard, ma devono specificare - M REG-nomi-prime vi basta usare R seguito dal numero di registro. Ci sono anche due varianti sul registro APCS denominazione schema abilitato per - M REG-nomi-atpcs e - M REG-nomi-special-atpcs che utilizzano le convenzioni di denominazione procedura ARMThumb chiamata standard. (In entrambi i casi con i nomi di registro normali oi nomi apposito registro). Questa opzione può essere utilizzata anche per le architetture ARM per forzare il disassembler di interpretare tutte le istruzioni come istruzioni Thumb utilizzando l'interruttore --disassembler-optionsforce-pollice. Ciò può essere utile quando si tenta di disassemblare codice pollice prodotte da altri compilatori. Per il 86, alcune delle opzioni duplicare funzioni dello switch - m, ma consentono un controllo più granulare. Più selezioni dal seguente possono essere specificati come una stringa separato da virgole. x86-64 i386 i8086 Selezionare lo smontaggio previsti per l'architettura. Intel att Scegliere tra la modalità sintassi Intel e modalità di sintassi ATampT. amd64 Intel64 Scegliere tra AMD64 ISA e Intel64 ISA. intel-mnemonico att-mnemonico Selezionare tra il modo mnemonico Intel e modalità mnemonico ATampT. Nota: intel-mnemonico implica Intel e att-mnemonico implica att. addr64 addr32 addr16 data32 DATO16 Specificare il formato indirizzo predefinito e la dimensione degli operandi. Queste quattro opzioni saranno sovrascritte se x86-64. i386 o i8086 compaiono più tardi nella stringa di opzione. suffisso In modalità ATampT, indica al disassembler per stampare un suffisso mnemonico anche quando il suffisso potrebbe essere dedotto dalle operandi. Per PowerPC, booke controlla lo smontaggio delle istruzioni Booke. 32 e 64 selezionare PowerPC e PowerPC64 lo smontaggio, rispettivamente. e300 seleziona lo smontaggio per la famiglia e300. 440 seleziona lo smontaggio per i PowerPC 440. PPCP seleziona lo smontaggio per le singole istruzioni accoppiati del PPC750CL. Per MIPS, questa opzione consente di controllare la stampa di nomi mnemonici istruzione e registrare i nomi di istruzioni smontati. Più selezioni dal seguente possono essere specificati come una stringa separati da virgola, e le opzioni non valide vengono ignorate: no-alias Stampa mnemonico istruzioni prima al posto di qualche mnemonico istruzioni pseudo. Cioè stampa daddu o o al posto di movimento, SLL invece di NOP, ecc istruzioni MSA Smontare MSA. virt Smontare le istruzioni di virtualizzazione ASE. XPA Smontare l'indirizzo fisico istruzioni (XPA) ASE estesa. GPR-nomi ABI Stampa GPR (registro general-purpose) nomi come appropriato per l'ABI specificato. By default, GPR names are selected according to the ABI of the binary being disassembled. fpr-names ABI Print FPR (floating-point register) names as appropriate for the specified ABI. By default, FPR numbers are printed rather than names. cp0-names ARCH Print CP0 (system control coprocessor coprocessor 0) register names as appropriate for the CPU or architecture specified by ARCH. By default, CP0 register names are selected according to the architecture and CPU of the binary being disassembled. hwr-names ARCH Print HWR (hardware register, used by the rdhwr instruction) names as appropriate for the CPU or architecture specified by ARCH. By default, HWR names are selected according to the architecture and CPU of the binary being disassembled. reg-names ABI Print GPR and FPR names as appropriate for the selected ABI. reg-names ARCH Print CPU-specific register names (CP0 register and HWR names) as appropriate for the selected CPU or architecture. For any of the options listed above, ABI or ARCH may be specified as numeric to have numbers printed rather than names, for the selected types of registers. You can list the available values of ABI and ARCH using the --help option. For VAX, you can specify function entry addresses with - M entry:0xf00ba. You can use this multiple times to properly disassemble VAX binary files that dont contain symbol tables (like ROM dumps). In these cases, the function entry mask would otherwise be decoded as VAX instructions, which would probably lead the rest of the function being wrongly disassembled. - p --private-headers Print information that is specific to the object file format. The exact information printed depends upon the object file format. For some object file formats, no additional information is printed. - P options --private options Print information that is specific to the object file format. The argument options is a comma separated list that depends on the format (the lists of options is displayed with the help). For XCOFF, the available options are: header aout sections syms relocs lineno, loader except typchk traceback toc ldinfo Not all object formats support this option. In particular the ELF format does not use it. - r --reloc Print the relocation entries of the file. If used with - d or - D. the relocations are printed interspersed with the disassembly. - R --dynamic-reloc Print the dynamic relocation entries of the file. This is only meaningful for dynamic objects, such as certain types of shared libraries. As for - r. if used with - d or - D. the relocations are printed interspersed with the disassembly. - s --full-contents Display the full contents of any sections requested. By default all non-empty sections are displayed. - S --source Display source code intermixed with disassembly, if possible. Implies - d. --prefix prefix Specify prefix to add to the absolute paths when used with - S. --prefix-strip level Indicate how many initial directory names to strip off the hardwired absolute paths. It has no effect without --prefix prefix. --show-raw-insn When disassembling instructions, print the instruction in hex as well as in symbolic form. This is the default except when --prefix-addresses is used. --no-show-raw-insn When disassembling instructions, do not print the instruction bytes. This is the default when --prefix-addresses is used. --insn-width width Display width bytes on a single line when disassembling instructions. - WlLiaprmfFsoRt --dwarfrawline, decodedline, info, abbrev, pubnames --dwarfaranges, macro, frames, frames-interp, str, loc --dwarfRanges, pubtypes, traceinfo, traceabbrev --dwarftracearanges, gdbindex Displays the contents of the debug sections in the file, if any are present. If one of the optional letters or words follows the switch then only data found in those specific sections will be dumped. Note that there is no single letter option to display the content of trace sections or. gdbindex. Note: the output from the info option can also be affected by the options --dwarf-depth. the --dwarf-start and the --dwarf-check. --dwarf-depth n Limit the dump of the. debuginfo section to n children. This is only useful with --dwarfinfo. The default is to print all DIEs the special value 0 for n will also have this effect. With a non-zero value for n. DIEs at or deeper than n levels will not be printed. The range for n is zero-based. --dwarf-start n Print only DIEs beginning with the DIE numbered n. This is only useful with --dwarfinfo. If specified, this option will suppress printing of any header information and all DIEs before the DIE numbered n. Only siblings and children of the specified DIE will be printed. This can be used in conjunction with --dwarf-depth. --dwarf-check Enable additional checks for consistency of Dwarf information. - G --stabs Display the full contents of any sections requested. Display the contents of the. stab and. stab. index and. stab. excl sections from an ELF file. This is only useful on systems (such as Solaris 2.0) in which. stab debugging symbol-table entries are carried in an ELF section. In most other file formats, debugging symbol-table entries are interleaved with linkage symbols, and are visible in the --syms output. --start-address address Start displaying data at the specified address. This affects the output of the - d. - r and - s options. --stop-address address Stop displaying data at the specified address. This affects the output of the - d. - r and - s options. - t --syms Print the symbol table entries of the file. This is similar to the information provided by the nm program, although the display format is different. The format of the output depends upon the format of the file being dumped, but there are two main types. One looks like this: where the number inside the square brackets is the number of the entry in the symbol table, the sec number is the section number, the fl value are the symbols flag bits, the ty number is the symbols type, the scl number is the symbols storage class and the nx value is the number of auxilary entries associated with the symbol. The last two fields are the symbols value and its name. The other common output format, usually seen with ELF based files, looks like this: Here the first number is the symbols value (sometimes refered to as its address). The next field is actually a set of characters and spaces indicating the flag bits that are set on the symbol. These characters are described below. Next is the section with which the symbol is associated or ABS if the section is absolute (ie not connected with any section), or UND if the section is referenced in the file being dumped, but not defined there. After the section name comes another field, a number, which for common symbols is the alignment and for other symbol is the size. Finally the symbols name is displayed. The flag characters are divided into 7 groups as follows: l g u. The symbol is a local (l), global (g), unique global (u), neither global nor local (a space) or both global and local (). A symbol can be neither local or global for a variety of reasons, e. g. because it is used for debugging, but it is probably an indication of a bug if it is ever both local and global. Unique global symbols are a GNU extension to the standard set of ELF symbol bindings. For such a symbol the dynamic linker will make sure that in the entire process there is just one symbol with this name and type in use. w The symbol is weak (w) or strong (a space). C The symbol denotes a constructor (C) or an ordinary symbol (a space). W The symbol is a warning (W) or a normal symbol (a space). A warning symbols name is a message to be displayed if the symbol following the warning symbol is ever referenced. I i The symbol is an indirect reference to another symbol (I), a function to be evaluated during reloc processing (i) or a normal symbol (a space). d D The symbol is a debugging symbol (d) or a dynamic symbol (D) or a normal symbol (a space). F f O The symbol is the name of a function (F) or a file (f) or an object (O) or just a normal symbol (a space). - T --dynamic-syms Print the dynamic symbol table entries of the file. This is only meaningful for dynamic objects, such as certain types of shared libraries. This is similar to the information provided by the nm program when given the - D ( --dynamic ) option. --special-syms When displaying symbols include those which the target considers to be special in some way and which would not normally be of interest to the user. - V --version Print the version number of objdump and exit. - x --all-headers Display all available header information, including the symbol table and relocation entries. Using - x is equivalent to specifying all of - a - f - h - p - r - t. - w --wide Format some lines for output devices that have more than 80 columns. Also do not truncate symbol names when they are displayed. - z --disassemble-zeroes Normally the disassembly output will skip blocks of zeroes. This option directs the disassembler to disassemble those blocks, just like any other data.

No comments:

Post a Comment