← man/dev_and_programming
objdump — man objdump — 80×24
ugur@toprak:~/man/dev_and_programming$man objdump
Bölüm 1 Geliştirme & Programlama

objdump

LLVM'in nesne dosyası dökücüsü (dumper)

Ö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 olarak görüntülenir.

-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= Tersine çevirme işleminde veya bölüm başlığı yazdırmada görüntülenen adresi belirtilen ofset kadar artırır.

--arch-name= Tersine çevirirken hedef mimariyi belirtir. Kullanılabilir hedeflerin listesi için --version seçeneğini kullanın.

--build-id= Nesneyi, onaltılık bir dize olarak belirtilen verilen derleme kimliğini (build ID) kullanarak arar. Bulunan nesne, bir girdi dosya adıymış gibi işlenir.

-C, --demangle Çıktıdaki sembol adlarını çözümler (demangle).

--debug-file-directory Sembollerden arındırılmış (stripped) ikili dosyalar için hata ayıklama bilgilerini aramak amacıyla bir .build-id alt dizinine sahip bir dizin yolu sağlar. Bu argümanın birden fazla örneği, verilen sırayla aranır.

--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= Tersine çevirici renkli çıktısını etkinleştirir veya devre dışı bırakır.

• 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= --source seçeneği ile tersine çevirirken, mutlak yollardan seviye kadar başlangıç dizinini kaldırır. Bu seçeneğin --prefix olmadan bir etkisi yoktur.

--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= Tersine çevirirken yalnızca belirtilen adresten itibaren tersine çevirir.

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= Tersine çevirirken yalnızca belirtilen adrese kadar (adres dahil hariç) tersine çevirir.

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:

: cmp eax, dword ptr jge

--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= Tersine çevrilecek hedef üçlüsü (target triple), kullanılabilir hedefler için --version seçeneğine bakın.

-w, --wide GNU objdump ile uyumluluk için yoksayılır.

--x86-asm-syntax= Kullanımdan kaldırılmıştır (deprecated). --disassemble ile birlikte kullanıldığında, X86 arka ucundan (backend) üretilecek kodun stilini seçer. Desteklenen değerler:

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.

@ Komut satırı seçeneklerini ve komutlarını yanıt dosyasından okur.

Yalnızca Mach-O Seçenekleri Ve Komutları

--arch= Tersine çevrilecek mimariyi belirtir. Kullanılabilir mimariler için --version seçeneğine bakın.

--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= Sadece belirtilen sembolün talimatlarını tersine çevirir.

--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= Hata ayıklama bilgi si için .dSYM dosyasını kullanır.

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