Özet
llvm-objdump [komutlar] [seçenekler] [dosya_adları...]
Açıklama
llvm-objdump yardımcı programı, komut satırında belirtilen nesne dosyalarının ve nihai bağlantılı imajların içeriklerini yazdırır. Herhangi bir dosya adı belirtilmezse, llvm-objdump a.out dosyasından okumaya çalışacaktır. Dosya adı olarak - kullanılırsa, llvm-objdump standart girdi akışındaki bir dosyayı işleyecektir.
Komutlar
Aşağıdaki komutlardan en az birinin kullanılması gerekir ve bazı komutlar diğer komutlarla birleştirilebilir:
-a, --archive-headers Bir arşivin başlıklarında yer alan bilgileri görüntüler.
-d, --disassemble
Girdi dosyalarında bulunan tüm yürütülebilir bölümleri tersine çevirir. Bazı mimarilerde (AArch64, PowerPC, x86), bilinen tüm talimatlar varsayılan olarak tersine çevrilir. Diğerlerinde ise bazı talimat kümelerini etkinleştirmek için --mcpu veya --mattr gerekir. Devre dışı bırakılan talimatlar
-D, --disassemble-all Girdi dosyalarında bulunan tüm bölümleri tersine çevirir.
--disassemble-symbols=<sembol1[,sembol2,...]> Yalnızca belirtilen sembolleri tersine çevirir. --demangle belirtildiğinde çözümlenmiş (demangled) sembol adlarını, aksi takdirde kodlanmış (mangled) sembol adlarını alır. --disassemble seçeneğini ima eder.
--dwarf=<değer> Belirtilen DWARF hata ayıklama (debug) bölümlerini döker. Desteklenen değerler:
frames - .debug_frame
-f, --file-headers Genel dosya başlığının içeriklerini görüntüler.
--fault-map-section Hata haritası (fault map) bölümünün içeriğini görüntüler.
-h, --headers, --section-headers Her bölüm için başlıkların özetlerini görüntüler.
--help Kullanım bilgisini görüntüler ve çıkış yapar. Diğer komutlarla birlikte kullanılamaz.
-p, --private-headers Biçime özgü dosya başlıklarını görüntüler.
-r, --reloc Dosyadaki yeniden konumlandırma (relocation) girdilerini görüntüler.
-R, --dynamic-reloc Dosyadaki dinamik yeniden konumlandırma girdilerini görüntüler.
--raw-clang-ast Clang AST bölümünün ham ikili (binary) içeriğini döker.
-s, --full-contents Her bölümün içeriğini görüntüler.
-t, --syms Sembol tablosunu görüntüler.
-T, --dynamic-syms Dinamik sembol tablosunun içeriklerini görüntüler.
-u, --unwind-info Girdilerin geri sarma (unwind) bilgisini görüntüler.
Bu işlem şu anda yalnızca COFF ve Mach-O nesne dosyaları için desteklenmektedir.
-v, --version llvm-objdump yürütülebilir dosyasının sürümünü görüntüler. Diğer komutlarla birlikte kullanılamaz.
-x, --all-headers Mevcut tüm başlık bilgilerini görüntüler. --archive-headers, --file-headers, --private-headers, --reloc, --section-headers ve --syms seçeneklerinin belirtilmesine eşdeğerdir.
Seçenekler
llvm-objdump aşağıdaki seçenekleri destekler:
--adjust-vma=
--arch-name=
--build-id=
-C, --demangle Çıktıdaki sembol adlarını çözümler (demangle).
--debug-file-directory
--debuginfod, --no-debuginfod Hata ayıklama ikili dosyaları için debuginfod aramalarının denenip denenmeyeceğini belirtir. Belirtilmediği sürece, debuginfod yalnızca libcurl derleme içine dahil edilmişse (LLVM_ENABLE_CURL) ve DEBUGINFOD_URLS çevre değişkeni tarafından en az bir sunucu URL'si sağlanmışsa etkinleştirilir.
--debug-vars=<biçim> Tersine çevrilen kodun yanında kaynak düzeyindeki değişkenlerin konumlarını (yazmaçlarda veya bellekte) yazdırır. Biçim unicode veya ascii olabilir, atlanırsa varsayılan olarak unicode olur.
--debug-vars-indent=<genişlik> Kaynak düzeyindeki değişken ekranının, tersine çevrilen kodun başlangıcına göre girintileme mesafesi. Varsayılan olarak 52 karakterdir.
-j, --section=<bölüm1[,bölüm2,...]> Komutları yalnızca belirtilen bölümler üzerinde yürütür. Mach-O için bölüm adını belirtmek üzere segment,section biçimini kullanın.
-l, --line-numbers Tersine çevirirken kaynak satır numaralarını görüntüler. --disassemble seçeneğini ima eder.
-M, --disassembler-options=<sec1[,sec2,...]> Hedefe özgü tersine çevirici seçeneklerini iletir. Kullanılabilir seçenekler:
• reg-names-std: Yalnızca ARM (varsayılan). ARM'in talimat kümesi belgelerinde olduğu gibi, r13/r14/r15 değerlerini sp/lr/pc ile değiştirerek yazdırır.
• reg-names-raw: Yalnızca ARM. r harfinin ardından gelen yazmaç numarasını kullanır.
• no-aliases: Yalnızca AArch64 ve RISC-V. Sözde talimat (pseudo instruction) anımsatıcısı (mnemonic) yerine ham talimat anımsatıcısını yazdırır.
• numeric: Yalnızca RISC-V. ABI anımsatıcısı yerine ham yazmaç adlarını yazdırır (örneğin ra yerine x1 yazdırır).
• att: Yalnızca x86 (varsayılan). AT&T sözdiziminde yazdırır.
• intel: Yalnızca x86. Intel sözdiziminde yazdırır.
--disassembler-color=
• off: Tersine çevirici renkli çıktısını devre dışı bırakır.
• on: Tersine çevirici renkli çıktısını etkinleştirir.
• terminal: Terminal destekliyorsa tersine çevirici renkli çıktısını etkinleştirir (varsayılan).
--mcpu=<cpu-adı> Tersine çevirme için belirli bir CPU türünü hedefler. Kullanılabilir CPU'ları görüntülemek için --mcpu=help belirtin.
--mattr=<a1,+a2,-a3,...> Hedefe özgü nitelikleri etkinleştirir/devre dışı bırakır. Kullanılabilir nitelikleri görüntülemek için --mattr=help belirtin.
-mllvm <argüman> LLVM'in CommandLine kitaplığına iletilecek bir argüman belirtir.
--no-leading-addr, --no-addresses Tersine çevirirken talimatlar veya satır içi (inline) yeniden konumlandırmalar için başlangıç adreslerini yazdırmaz.
--no-print-imm-hex Tersine çevirme çıktısında doğrudan değerler (immediate values) için onaltılık (hex) biçimi kullanmaz.
--no-show-raw-insn Tersine çevirirken her talimatın ham baytlarını yazdırmaz.
--offloading LLVM offloading bölümlerinin ve HIP offload paketlerinin içeriğini görüntüler.
--prefix=<önek> --source seçeneği ile tersine çevirirken, mutlak yolların başına önek ekler.
--prefix-strip=
--print-imm-hex Tersine çevirme çıktısında doğrudan değerleri yazdırırken onaltılık biçimi kullanır (varsayılan).
-S, --source Tersine çevirirken kaynak kodu tersine çevrilmiş kodla serpiştirilmiş olarak görüntüler. --disassemble seçeneğini ima eder.
--show-all-symbols Aynı konumda birden fazla sembol tanımlanmış olsa bile, tersine çevirme sırasında tüm sembolleri gösterir.
--show-lma ELF bölüm başlıklarını dökerken LMA sütununu görüntüler. Herhangi bir bölüm farklı VMA ve LMA'lara sahip olmadığı sürece varsayılan olarak kapalıdır.
--start-address=
Yeniden konumlandırmaları yazdırırken, yalnızca en azından adresten başlayan ofsetleri yamalayan yeniden konumlandırmaları yazdırır.
Sembolleri yazdırırken, yalnızca en azından adres değerine sahip sembolleri yazdırır.
--stop-address=
Yeniden konumlandırmaları yazdırırken, yalnızca adrese kadar olan ofsetleri yamalayan yeniden konumlandırmaları yazdırır.
Sembolleri yazdırırken, yalnızca adrese kadar değer taşıyan sembolleri yazdırır.
--symbolize-operands Tersine çevirirken, gerçek bir adres yerine bir etiket yazdırmak için bir dallanma hedefi operandını sembolleştirir.
PC-bağıntılı bir genel sembol referansını yazdırırken, bunu başlangıç sembolünden bir ofset olarak yazdırır.
Bir bb-address-map bölümü mevcut olduğunda (yani, nesne dosyası -fbasic-block-address-map ile derlendiğinde), etiketler bunun yerine o bölümden alınır. Eğer bb-address-map'in yanında bir pgo-analysis-map de varsa, ilgili blok etiketinden sonra mevcut analizler yazdırılır. Varsayılan olarak, özel bir gösterimi olan herhangi bir analiz (örneğin BlockFrequency, BranchProbability vb.) ham onaltılık değerler olarak yazdırılır.
Yalnızca AArch64, BPF, PowerPC ve X86 için desteklenir.
Örnek: Sembolleştirilmemiş, yerel bir hedefe ve pc-bağıntılı bellek erişimine sahip bir dallanma talimatı şunun gibiyken:
cmp eax, dword ptr [rip + 4112] jge 0x20117e <_start+0x25>
şuna dönüşebilir:
--pretty-pgo-analysis-map bb-address-map ve pgo-analysis-map ile --symbolize-operands seçeneğini kullanırken, analizleri kendi analiz adımlarının yapacağı biçimde yazdırır. Güzel (pretty) biçime bir örnek, blok frekanslarını giriş bloğuna göre yazdırmak olacaktır, bu BFI ile aynıdır.
Yalnızca --symbolize-operands etkinleştirildiğinde çalışır.
--triple=
-w, --wide GNU objdump ile uyumluluk için yoksayılır.
--x86-asm-syntax=
att AT&T stili montaj (assembly)
intel Intel stili montaj (assembly)
Varsayılan tersine çevirme stili att'dir.
-z, --disassemble-zeroes Tersine çevirirken sıfır bloklarını atlamaz.
@
Yalnızca Mach-O Seçenekleri Ve Komutları
--arch=
--archive-member-offsets Mach-O arşivleri için her arşiv üyesinin ofsetini yazdırır (--archive-headers gerektirir).
--bind Bağlama (binding) bilgisini görüntüler.
--data-in-code Kod tablosundaki verileri görüntüler.
--dis-symname=
--chained-fixups Zincirlenmiş düzeltme (chained fixup) bilgilerini yazdırır.
--dyld-info Nihai bağlantılı bir ikili dosyadaki harici referansları çözmek için dyld tarafından kullanılan bağlama (bind) ve yeniden temellendirme (rebase) bilgilerini yazdırır.
--dylibs-used Bağlantılı dosyalar için kullanılan paylaşılan kitaplıkları görüntüler.
--dsym=
--dylib-id Dylib dosyaları için paylaşılan kitaplığın kimliğini görüntüler.
--exports-trie Dışa aktarılan sembolleri görüntüler.
--function-starts [=<addrs|names|both>] Mach-O nesneleri için işlev başlangıç tablosunu yazdırır. Yalnızca işlevlerin adreslerini yazdırmak için addrs (varsayılan), yalnızca işlevlerin adlarını (varsa) yazdırmak için names veya adreslerin yanında adları da yazdırmak için both seçilebilir.
-g: Varsa hata ayıklama bilgisindeki satır bilgilerini yazdırır.
--full-leading-addr Tersine çevirirken tam başlangıç adresini yazdırır.
--indirect-symbols Dolaylı sembol tablosunu görüntüler.
--info-plist Info plist bölümünü dizeler olarak görüntüler.
--lazy-bind Gecikmeli bağlama (lazy binding) bilgisini görüntüler.
--link-opt-hints Bağlayıcı optimizasyon ipuçlarını görüntüler.
-m, --macho Mach-O'ya özgü nesne dosyası ayrıştırıcısını kullanır. Komutlar ve diğer seçenekler --macho ile kullanıldığında farklı davranabilir.
--no-leading-headers Hiçbir başlangıç başlığını yazdırmaz.
--no-symbolic-operands Tersine çevirirken sembolik operandları yazdırmaz.
--non-verbose Mach-O nesnelerine ait bilgileri ayrıntısız (non-verbose) veya sayısal biçimde görüntüler.
--objc-meta-data Objective-C çalışma zamanı meta verilerini görüntüler.
--private-header Yalnızca biçime özgü ilk dosya başlığını görüntüler.
--rebase Yeniden temellendirme (rebasing) bilgisini görüntüler.
--rpaths İkili dosya için çalışma zamanı arama yollarını görüntüler.
--universal-headers Evrensel (universal) başlıkları görüntüler.
--weak-bind Zayıf bağlama (weak binding) bilgilerini görüntüler.
Yalnızca Xcoff Seçenekleri Ve Komutları
--symbol-description Tersine çevirme çıktısına sembol açıklamasını ekler.
--traceback-table Tersine çevirme çıktısında geri izleme (traceback) tablosunu çözer. --disassemble seçeneğini ima eder.
Hatalar
Hataları bildirmek için lütfen https://github.com/llvm/llvm-project/labels/tools:llvm-objdump/ adresini ziyaret edin.
Ayrıca Bakınız
llvm-nm(1), llvm-otool(1), llvm-readelf(1), llvm-readobj(1)
Yazar
LLVM Ekibi tarafından sürdürülmektedir (https://llvm.org/).
Telif Hakkı
2003-2026, LLVM Projesi