llvm-nm - 列出 LLVM 位元碼和物件檔案的符號表¶
語法¶
llvm-nm [選項] [檔名…]
說明¶
llvm-nm 工具會列出 LLVM 位元碼檔案、物件檔案和封存檔案中符號的名稱。每個符號都會列出,並附帶一些關於其來源的簡單資訊。如果沒有指定檔名,則使用 a.out 作為輸入。如果使用 - 作為檔名,llvm-nm 將從其標準輸入串流讀取檔案。
llvm-nm 的預設輸出格式是傳統的 BSD nm 輸出格式。每個此類輸出記錄都包含一個(可選的)8 位數十六進位地址,後跟一個類型代碼字元,後跟一個名稱,用於每個符號。每行列印一條記錄;欄位以空格分隔。當地址被省略時,它會被 8 個空格取代。
支援的類型代碼字元如下所示。如果同時列出大小寫字元表示相同的意思,則小寫字元表示局部符號,而大寫字元表示全域(外部)符號。
a, A
絕對符號。
b, B
未初始化數據(bss)物件。
C
通用符號。多個定義鏈接在一起成為一個定義。
d, D
可寫入數據物件。
i, I
COFF:.idata 符號或設定了 IMAGE_SCN_LNK_INFO 的區段中的符號。
n
ELF:來自非配置區段的局部符號。
COFF:除錯符號。
N
ELF:除錯區段符號,或來自非配置區段的全域符號。
s, S
COFF:區段符號。
Mach-O:絕對符號或來自 __TEXT_EXEC __text、__TEXT __text、__DATA __data 或 __DATA __bss 以外區段的符號。
r, R
唯讀數據物件。
t, T
程式碼(文字)物件。
u
ELF:GNU 唯一符號。
U
已命名的物件在此檔案中未定義。
v
ELF:未定義的弱物件。如果未定義物件,則不會發生鏈接錯誤。
V
ELF:已定義的弱物件符號。僅當鏈接中不存在常規定義時,才會使用此定義。如果存在多個弱定義且沒有常規定義,則將使用其中一個弱定義。
w
除 ELF 物件符號以外的未定義弱符號。如果未定義符號,則不會發生鏈接錯誤。
W
除 ELF 物件符號以外的已定義弱符號。僅當鏈接中不存在常規定義時,才會使用此定義。如果存在多個弱定義且沒有常規定義,則將使用其中一個弱定義。
-
Mach-O:N_STAB 符號。
?
無法辨識的內容。
由於 LLVM 位元碼檔案通常包含在被連結到可執行映像檔或動態編譯「 just-in-time 」之前不被視為具有位址的物件,因此 llvm-nm 不會列印 LLVM 位元碼檔案中任何符號的位址,即使是位元碼檔案中定義的符號也是如此。
選項¶
- -B¶
使用 BSD 輸出格式。
--format=bsd
的別名。
- -X¶
指定 llvm-nm 應檢查的 XCOFF 物件檔案、ELF 物件檔案或 IR 物件檔案輸入的類型,可以從命令列或封存檔案中指定。 模式必須是以下其中之一
- 32
僅處理 32 位元物件檔案。
- 64
僅處理 64 位元物件檔案。
- 32_64
同時處理 32 位元和 64 位元物件檔案。
- any
處理所有支援的物件檔案。
在 AIX 作業系統上,預設值是僅處理 32 位元物件檔案並忽略 64 位元物件。 可以透過設定 OBJECT_MODE 環境變數來變更此設定。 例如,OBJECT_MODE=64 會導致 llvm-nm 處理 64 位元物件並忽略 32 位元物件。 -X 旗標會覆寫 OBJECT_MODE 變數。
在其他作業系統上,預設值是處理所有物件檔案:不支援 OBJECT_MODE 環境變數。
- --debug-syms, -a¶
顯示所有符號,即使是通常會被隱藏的符號。
- --defined-only, -U¶
僅列印在此檔案中定義的符號。
- --demangle, -C¶
對符號名稱進行反組譯。
- --dynamic, -D¶
顯示動態符號,而不是一般符號。
- --export-symbols¶
列印已排序的符號及其可見性(如果適用),並移除重複的符號。
- --extern-only, -g¶
僅列印定義為外部的符號;也就是說,可以從其他檔案存取的符號。
- --format=<format>, -f¶
選擇輸出格式;*format* 可以是 *sysv*、*posix*、*darwin*、*bsd* 或 *just-symbols*。預設值為 *bsd*。
- --help, -h¶
列印命令列選項及其含義的摘要。
- -j¶
僅列印符號名稱。 –format=just-symbols` 的別名。
- --line-numbers, -l¶
使用除錯資訊來列印定義符號的檔案名稱和行號。 未定義的符號會改為列印其第一個重定位的位置。
- -m¶
使用 Darwin 格式。
--format=darwin
的別名。
- --no-demangle¶
不要對符號名稱進行去混淆處理。這是預設值。
- --no-llvm-bc¶
停用 LLVM 位元碼讀取器。
- --no-sort, -p¶
按照遇到的順序列出符號。
- --no-weak, -W¶
不要列印弱符號。
- --numeric-sort, -n, -v¶
按地址對符號進行排序。
- --portability, -P¶
使用 POSIX.2 輸出格式。
--format=posix
的別名。
- --print-armap¶
除了符號之外,還要列印封存符號表。
- --print-file-name, -A, -o¶
在每個符號前加上其來源檔案。
- --print-size, -S¶
顯示符號大小以及地址(不適用於 Mach-O)。
- --quiet¶
隱藏「無符號」診斷訊息。
- --radix=<RADIX>, -t¶
指定符號地址的進制。可接受的值為 d(十進制)、x(十六進制)和 o(八進制)。
- --reverse-sort, -r¶
以反向順序排序符號。
- --size-sort¶
按大小排序符號。
- --special-syms¶
不要從輸出中過濾特殊符號。
- --undefined-only, -u¶
僅列印未定義的符號。
- --version, -V¶
顯示 llvm-nm 可執行檔的版本,然後退出。不與其他命令堆疊。
- @<FILE>¶
從回應檔案 <FILE> 讀取命令列選項。
MACH-O 特定選項¶
- --add-dyldinfo¶
從 dyldinfo 中添加符號(如果它們尚未出現在符號表中)。這是預設值。
- --add-inlinedinfo¶
從內嵌程式庫中添加符號,僅限 TBD 檔案輸入。
- --arch=<arch1[,arch2,...]>¶
傾印來自指定架構的符號。
- --dyldinfo-only¶
僅傾印來自 dyldinfo 的符號。
- --no-dyldinfo¶
不要添加任何來自 dyldinfo 的符號。
- -s <segment> <section>¶
僅傾印來自此區段和區段名稱的符號。
- -x¶
以十六進制打印符號條目。
XCOFF 特定選項¶
- --no-rsrc¶
從匯出符號列表中排除資源檔符號 (
__rsrc
)。
錯誤¶
llvm-nm 不支援 GNU nm 的完整參數集。
結束狀態¶
llvm-nm 結束時會返回零的結束代碼。
另請參閱¶
llvm-ar(1), llvm-objdump(1), llvm-readelf(1), llvm-readobj(1)