llvm-nm - 列出 LLVM bitcode 和物件檔案的符號表¶
概要¶
llvm-nm [選項] [檔案名稱…]
描述¶
llvm-nm 工具程式會列出 LLVM bitcode 檔案、物件檔案和封存檔中的符號名稱。每個符號都會連同其來源的一些簡單資訊一起列出。如果未指定檔案名稱,則會使用 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 bitcode 檔案通常包含在連結到可執行映像檔或動態編譯「即時」之前,不被認為具有地址的物件,因此 llvm-nm 不會為 LLVM bitcode 檔案中的任何符號列印地址,即使是 bitcode 檔案中定義的符號也是如此。
選項¶
- -B¶
使用 BSD 輸出格式。
--format=bsd
的別名。
- -X¶
指定 llvm-nm 應檢查的來自命令列或封存檔的 XCOFF 物件檔案、ELF 物件檔案或 IR 物件檔案輸入的型別。模式必須是下列其中之一
- 32
僅處理 32 位元物件檔案。
- 64
僅處理 64 位元物件檔案。
- 32_64
同時處理 32 位元和 64 位元物件檔案。
- any
處理所有支援的物件檔案。
在 AIX OS 上,預設為僅處理 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 bitcode 讀取器。
- --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)