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>

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

另請參閱

llvm-objcopy(1)