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

nm

ad listesini (sembol tablosu) görüntüler

Sözdizimi

       llvm-nm [ -agnoprumxjlPA ] [ - ] [ -t format ] [[ -arch arch_flag ]...] [ file ... ] [ -s
       segname sectname ]

       nm-classic [ -agnoprumxjlfPA [ s segname sectname ]] [ - ] [ -t format ] [[ -arch arch_flag
       ]...] [ file ... ]

Açıklama

Xcode 8.0 itibarıyla varsayılan nm(1) aracı llvm-nm(1)'dir. Çoğunlukla nm(1) ve llvm-nm(1) aynı seçeneklere sahiptir; aşağıda açıklanan -f, -s ve -L dikkate değer istisnalardır. Bu belge, iki komut arasındaki ortak seçeneklerin yanı sıra geçmişte nm-classic(1) tarafından desteklenen bazı ilgili seçenekleri de açıklamaktadır. llvm-nm(1) seçenekleri hakkında daha fazla yardım, program --help seçeneğiyle çalıştırıldığında sağlanır.

nm, argüman listesindeki her bir nesne dosyasının (object file) ad listesini (nlist yapılarının sembol tablosu) görüntüler. Bazı durumlarda, strip(1) aracının -T seçeneği uygulanmış bir nesnede olduğu gibi, bu liste dyld bilgilerinden farklı olabilir. Bu bilgiler için dyld_info(1) aracını kullanın.

Eğer bir argüman arşiv ise, arşivdeki her bir nesne dosyası için bir liste üretilecektir. Dosya, libx.a(x.o) biçiminde olabilir, bu durumda yalnızca o nesne dosyası üyesinin sembolleri listelenir. (Parantezlerin kabuktan geçebilmesi için tırnak içine alınması gerekir.) Hiçbir dosya belirtilmezse, a.out içindeki semboller listelenir.

Her sembol adından önce değeri gelir (tanımsızsa boş kalır). -m seçeneği belirtilmediği sürece bu değer, sembol türünü temsil eden aşağıdaki karakterlerden biriyle takip edilir: U (tanımsız - undefined), A (mutlak - absolute), T (metin bölümü sembolü - text section symbol), D (veri bölümü sembolü - data section symbol), B (bss bölümü sembolü - bss section symbol), C (ortak sembol - common symbol), - (hata ayıklayıcı sembol tablosu girdileri için; aşağıdaki -a seçeneğine bakın), S (yukarıdakiler dışındaki bir bölümdeki sembol) veya I (dolaylı sembol - indirect symbol). Sembol yerel (harici olmayan) ise, sembolün türü bunun yerine ilgili küçük harfle temsil edilir. Dinamik paylaşılan bir kitaplıktaki küçük 'u' harfi, aynı kitaplıktaki başka bir modüldeki özel bir hariciye (private external) yönelik tanımlanmamış bir referansı belirtir.

Eğer sembol bir Objective-C metodu ise, sembol adı ±[Sinif_adi(kategori_adi) metod:adi:] biçimindedir; burada + sınıf metotları için, - örnek (instance) metotları içindir ve (kategori_adi) yalnızca metot bir kategoride olduğunda mevcuttur.

Çıktı varsayılan olarak alfabetik olarak sıralanır.

Seçenekler

Seçenekler şunlardır:

  • -a: Hata ayıklayıcılar tarafından kullanılmak üzere eklenenler de dahil olmak üzere tüm sembol tablosu girdilerini görüntüler.

  • -g: Yalnızca genel (harici) sembolleri görüntüler.

  • -n: Alfabetik yerine sayısal olarak sıralar.

  • -o: Yalnızca bir kez yerine, her çıktı satırının başına dosya veya arşiv öğesi adını ekler.

  • -p: Sıralama yapmaz; sembol tablosu sırasına göre görüntüler.

  • -r: Ters sırada sıralar.

  • -u: Yalnızca tanımlanmamış sembolleri görüntüler.

  • -U: Tanımlanmamış sembolleri görüntülemez.

  • -m: N_SECT türü sembolleri (Mach-O sembolleri) (segment_adı, bölüm_adı) ve ardından external (harici) veya non-external (harici olmayan) ve sembol adı olarak görüntüler. Tanımsız, ortak, mutlak ve dolaylı semboller sırasıyla (undefined), (common), (absolute) ve (indirect) olarak görüntülenir. Diğer sembol ayrıntıları, "[no dead strip]" gibi insan dostu bir şekilde görüntülenir. nm, dolaylı semboller için referans verilen sembolü görüntüler ve tanımlanmamış bir sembolü sağlaması beklenen kitaplığın adını görüntüler. nlist yapısı hakkında daha fazla bilgi için nlist(3) ve <mach-o/nlist.h> belgelerine bakın.

  • -x: Sembol tablosu girdisinin alanlarını onaltılık (hexadecimal) olarak ve adını bir dize olarak görüntüler.

  • -j: Yalnızca sembol adlarını görüntüler (değer veya tür göstermez).

-s segname sectname Yalnızca (segname,sectname) bölümündeki sembolleri listeler. llvm-nm(1) için bu seçenek komut satırında en sonda ve dosyalardan sonra yer almalıdır.

  • -l: Bölümün başlangıç adresini değer olarak alan hiçbir sembol yoksa, bir yalancı (pseudo) sembol olan .section_start sembolünü listeler. (Bu, yukarıdaki -s seçeneğiyle birlikte kullanılır.)

-arch arch_type Dosya bir evrensel (universal) dosya olduğunda, nm(1) aracının işlem yapacağı dosya mimarisini (arch_type) belirtir (şu anda bilinen arch_types için arch(3) belgesine bakın). Dosyadaki tüm mimariler üzerinde işlem yapmak için arch_type "all" olabilir. Varsayılan olarak, dosya bunu içeriyorsa yalnızca ana bilgisayar (host) mimarisinin sembolleri görüntülenir; aksi takdirde, dosyadaki tüm mimarilerin sembolleri görüntülenir.

  • -f: format llvm-nm(1) için çıktı biçimini belirtir. format değeri bsd, sysv, posix veya darwin olabilir.

  • -f: nm-classic(1) için dinamik bir kitaplığın sembol tablosunu düz (ayrı modüller olarak değil, tek bir dosya olarak) görüntüler. Bu kullanım eskimiştir ve llvm-nm(1) ile desteklenmez.

  • -A: Her satıra bir nesnenin yol adını (pathname) veya kitaplık adını yazar.

  • -P: Bilgileri taşınabilir bir çıktı biçiminde (portable output format) yazar.

-t format -P çıktısı için sayısal değeri belirtilen biçimde yazar. Biçim, biçim seçenek argümanı olarak kullanılan tek karaktere bağlı olacaktır:

d Değer ondalık (decimal) olarak yazılacaktır (varsayılan).

o Değer sekizlik (octal) olarak yazılacaktır.

x Değer onaltılık (hexadecimal) olarak yazılacaktır.

  • -L: Varsa, nesnenin sembol tablosu yerine (__LLVM,__bundle) bölümündeki bitcode dosyalarındaki sembolleri görüntüler. nm-classic(1) için nesnenin sembol tablosu yoksa ve bir (__LLVM,__bundle) bölümü mevcutsa varsayılan davranış budur. llvm bitcode sembollerini görüntülemenin varsayılan davranış olduğu llvm-nm(1) tarafından bu seçenek desteklenmez.

Ayrıca Bakınız

ar(1), ar(5), Mach-O(5), stab(5), nlist(3), dyld_info(1)

Hatalar

Mach-O sembollerini -m ile görüntülemek çok fazla ayrıntı içerir. -m olmadan, Objective-C bölümlerindeki semboller bir s olarak görüntülenir.

Apple, Inc. 13 Aralık 2018 NM(1)