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 <file>¶
將輸出寫入 <file>。多個輸入檔案不能與 -o 組合使用。
- --only-keep-debug¶
產生一個除錯檔案作為輸出,該檔案僅保留對除錯目的有用的區段內容。
對於 ELF 物件,這會移除不是 SHT_NOTE 的 SHF_ALLOC 區段的內容,方法是將它們設為 SHT_NOBITS 並在可能的情況下縮減程式標頭。
- --regex¶
如果指定,其他開關指定的符號和區段名稱將被視為擴展的 POSIX 正則表達式模式。
- --remove-section <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 <symbol>, -N¶
從輸出中移除所有名為
<symbol>
的符號。可以多次指定以移除多個符號。
- --strip-unneeded¶
從輸出中移除重定位不需要的所有本地或未定義符號。同時移除所有除錯區段。
- --version, -V¶
顯示 llvm-strip 可執行檔的版本。
- --wildcard, -w¶
允許用於符號相關標誌的萬用字元語法。區段相關標誌預設為啟用。與 –regex 不相容。
萬用字元語法允許以下特殊符號
字元
含義
等效項
*
*
.*
?
?
.
\
\
\
[a-z]
字元類別
[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>¶
從輸出中移除區段時,不要移除名為
<section>
的區段。可以多次指定以保留多個區段。
- --keep-symbol <symbol>, -K¶
從輸出中移除符號時,不要移除名為
<symbol>
的符號。可以多次指定以保留多個符號。
- --preserve-dates, -p¶
在輸出中保留存取和修改時間戳記。
- --strip-sections¶
從輸出中移除所有區段標頭和所有不在區段中的區段資料。請注意,許多工具將無法使用沒有區段標頭的物件。
- -T¶
移除 Swift 符號。
結束狀態¶
如果發生錯誤,llvm-strip 會以非零結束代碼結束。否則,它會以代碼 0 結束。
錯誤¶
要報告錯誤,請訪問 <https://github.com/llvm/llvm-project/labels/tools:llvm-objcopy%2Fstrip>。