llvm-strip - 物件剝離工具¶
語法¶
llvm-strip [選項] 輸入…
描述¶
llvm-strip 是一個從物件檔案中剝離區段和符號的工具。如果沒有指定其他剝離或移除選項,則會啟用 --strip-all
。
預設情況下,輸入檔案會被就地修改。如果輸入檔案指定為「-」,則會從程式的標準輸入流讀取輸入。
如果輸入是一個封存檔,則任何請求的操作都將單獨應用於每個封存成員。
該工具仍在積極開發中,但在大多數情況下,它可以作為 GNU 的 strip 的直接替代品。
通用和跨平台選項¶
以下選項與檔案格式無關,或者適用於多種檔案格式。
- --disable-deterministic-archives, -U¶
在更新封存成員標頭時,對 UID、GID 和時間戳記使用實際值。
- --discard-all, -x¶
從輸出中移除大部分的局部符號。不同的檔案格式可能會將此限制為局部符號的子集。例如,ELF 物件中的檔案和區段符號不會被丟棄。此外,移除所有偵錯區段。
- --enable-deterministic-archives, -D¶
在剝離封存時啟用確定性模式,即對封存成員標頭的 UID、GID 和時間戳記欄位使用 0。預設為啟用。
- --help, -h¶
列印命令列選項的摘要。
- --no-strip-all¶
停用
--strip-all
。
- -o <檔案>¶
將輸出寫入 <檔案>。多個輸入檔案不能與 -o 結合使用。
- --only-keep-debug¶
產生僅保留用於除錯目的區段內容的除錯檔案作為輸出。
對於 ELF 物件,這會透過將 SHF_ALLOC 區段(非 SHT_NOTE)設為 SHT_NOBITS 並盡可能縮減程式標頭來移除其內容。
- --regex¶
如果指定,則其他參數指定的符號和區段名稱將被視為擴充 POSIX 正規表示式模式。
- --remove-section <區段>, -R¶
從輸出中移除指定的區段。可以指定多次以同時移除多個區段。
- --strip-all-gnu¶
從輸出中移除所有符號、除錯區段和重定位。這個選項相當於 GNU strip 的
--strip-all
參數。
- --strip-all, -s¶
對於 ELF 物件,從輸出中移除所有符號和非配置區段(不在區段內),但 .gnu.warning、.ARM.attribute 區段和區段名稱表除外。
對於 COFF 物件,從輸出中移除所有符號、除錯區段和重定位。
- --strip-debug, -d, -g, -S¶
從輸出中移除所有除錯區段。
- --strip-symbol <符號>, -N¶
從輸出中移除所有名為
<符號>
的符號。可以指定多次以移除多個符號。
- --strip-unneeded¶
從輸出中移除重定位不需要的所有區域或未定義符號。同時移除所有除錯區段。
- --version, -V¶
顯示 llvm-strip 可執行檔的版本。
- --wildcard, -w¶
允許符號相關旗標使用萬用字元語法。對於區段相關旗標,預設為啟用。與 –regex 不相容。
萬用字元語法允許使用以下特殊符號
字元
意義
等效
*
*
.*
?
任意數量的字元
.
\
?
\
任何單一字元
\
任何單一字元
跳過下一個字元
[a-z]
字元類別
[!a-z]
,[^a-z]
否定字元類別
- [^a-z]
此外,以「!」開頭的萬用字元將會阻止匹配,即使其他旗標匹配。例如,
-w -N '*' -N '!x'
將會去除除x
以外的所有符號。
萬用字元的順序並不重要。例如,-w -N '*' -N '!x'
與 -w -N '!x' -N '*'
相同。
@<FILE>¶
- 從回應檔案 <FILE> 讀取命令列選項和指令。
ELF 特定選項¶
- 以下選項僅針對 ELF 物件實作。如果與其他物件一起使用,llvm-strip 將會發出錯誤或靜默地忽略它們。
--allow-broken-links¶
- 允許 llvm-strip 移除區段,即使這會導致無效的區段參考。任何無效的 sh_link 欄位都將設定為零。
--discard-locals, -X¶
- 從輸出中移除以「.L」開頭的區域符號。
--keep-file-symbols¶
- 保留類型為 STT_FILE 的符號,即使它們在其他情況下會被去除。
--keep-section <section>¶
- --preserve-dates, -p¶
在輸出中保留存取和修改時間戳記。
- --strip-sections¶
從輸出中移除所有區段標頭以及所有不在區段內的區段資料。請注意,許多工具將無法使用沒有區段標頭的物件。
- -T¶
移除 Swift 符號。
結束狀態¶
如果發生錯誤,llvm-strip 會以非零的結束代碼退出。否則,它會以代碼 0 退出。
錯誤¶
要回報錯誤,請造訪 <https://github.com/llvm/llvm-project/labels/tools:llvm-objcopy%2Fstrip>。