日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
LD.LLD(1) FreeBSD 一般コマンドマニュアル LD.LLD(1)
名称
ld.lld -- LLVM プロジェクトの ELF リンカ
書式
ld.lld [options] objfile ...
解説
リンカは、1 つ以上のオブジェクト、アーカイブとライブラリファイルを取り、
それらを出力ファイル (実行形式、共有ライブラリまたは別のオブジェクトファ
イル) に統合します。それは、入力ファイルからコードとデータをリロケーショ
ンし、それらの間のシンボルの参照を解決します。
ld.lld は、GNU BFD とゴールドリンカのためのドロップイン (交換用の) 置換で
す。それは、GNU リンカとして同じコマンド行引数とリンカスクリプトのほとん
どを受け付けます。
ld.lld は、現在 i386, x86-64, ARM, AArch64, PowerPC32, PowerPC64, MIPS32,
MIPS64, RISC-V, AMDGPU, Hexagon と SPARC V9 ターゲットをサポートしていま
す。ld.lld は、lld-link として呼び出されるなら、Microsoft link.exe 互換リ
ンカとして、ld.ld64 として呼び出されるなら、macOS の ld として動作しま
す。すべてのこれらのターゲットは、常にサポートされますが、ld.lld が構築さ
れたので、利用者は、クロスリンカと同様にネイティブのリンカとして、常に
ld.lld を使用することができます。
オプション
多くのオプションには、単一文字と長い形式があります。文字 o で始まるオプ
ション以外の長い形式のオプションを使用するとき、オプション名に先行する 1
つまたは 2 つのダッシュのいずれかを使用して指定されます。o で始まる長いオ
プションは、-o path オプションとの混乱を避けるために、2 つのダッシュを必
要とします。
--allow-multiple-definition
シンボルが、複数回定義されるなら、エラーではありません。最初の定
義が使用されます。
--allow-shlib-undefined
共有ライブラリの未解決の参照を許可します。このオプションは、共有
されたファイブラリをリンクするとき、デフォルトで、有効です。
--apply-dynamic-relocs
リンク時の値を動的なリロケーションに適用します。
--as-needed
使用されるなら、共有ライブラリのための DT_NEEDED のみを設定しま
す。
--auxiliary=value
DT_AUXILIARY フィールドを、指定された名前に設定します。
--Bdynamic, --dy
共有ライブラリに対してリンクします。
--Bstatic, --static, --dn
共有ライブラリに対してリンクしません。
-Bno-symbolic
デフォルトの可視性定義のシンボルを -shared のローカルにバインドし
ません (デフォルト)。
-Bsymbolic
デフォルトの可視性定義のシンボルを -shared. のローカルにバインド
します。また、DF_SYMBOLIC フラグを設定します。
-Bsymbolic-functions
デフォルトの可視性定義の関数シンボルを -shared のローカルにバイン
ドします。
-Bsymbolic-non-weak-functions
デフォルトの可視性定義の STB_GLOBAL 関数シンボルを -shared のロー
カルにバインドします。
--build-id=value
構築 ID の注を生成します。value は、fast, md5, sha1, tree, uuid,
0xhex-string と none の 1 つを指定できます。tree は、sha1 のため
のエイリアス (別名) です。タイプ fast, md5, sha1 と tree の構築
ID は、オブジェクト内容から計算されます。fast は、暗号論的に安全
であることを意図していません。
--build-id
--build-id=fast と同義語。
--color-diagnostics=value
診断で色を使用します。value は、always, auto と never の 1 つを指
定できます。auto は、出力が端末にであるときかつそのときに限り、色
を有効にします。
--color-diagnostics
--color-diagnostics=auto のためのエイリアス (別名)。
--compress-debug-sections=value
DWARF デバッグセクションを圧縮します。value は、none または zlib
を指定できます。デフォルト圧縮レベルは、そのレベルで、通常うまく
圧縮するデバッグ情報として 1 (最速) ですが、利用者がそれをより圧
縮したいなら、圧縮レベルを 6 に設定するために -O2 を指定すること
ができます。
--cref 相互参照テーブルを出力します。-Map が指定されているなら、マップ
ファイルに印刷 (出力) します。
--define-common, -d
空白を共通シンボルに割り当てます。
--defsym=symbol=expression
シンボルの別名 (エイリアス) を定義します。expression は、別のシン
ボルまたはリンカスクリプト表現を指定できます。例えば、
`--defsym=foo=bar' または `--defsym=foo=bar+0x100'。
--demangle
シンボル名を demangle します。
--disable-new-dtags
新しい動的なタグを無効にします。
--discard-all, -x
すべてのローカルなシンボルを削除します。
--discard-locals, -X
一時的なローカルなシンボルを削除します。
--discard-none
シンボルテーブルのすべてのシンボルを保持します。
--dynamic-linker=value
動的なリンクされた実行形式のために使用される動的なリンカを指定し
ます。これは、タイプ PT_INTERP の ELF セグメントに記録されます。
--dynamic-list=file
--export-dynamic-symbol-list に似ています。共有オブジェクトを作成
するとき、-Bsymbolic を意味しますが、DF_SYMBOLIC を設定しません。
--EB OUTPUT_FORMAT コマンドでビッグエンディアンの形式を選択します。
--EL OUTPUT_FORMAT コマンドでリトルエンディアンの形式を選択します。
--eh-frame-hdr
.eh_frame_hdr セクションと PT_GNU_EH_FRAME セグメントヘッダの作成
を要求します。
--emit-relocs, -q
出力のリロケーションを生成します。
--enable-new-dtags
新しい動的なタグを有効にします。
--end-lib
あたかもそれらが、アーカイブとともであるかのように、扱われるべき
オブジェクトのグループを終了します。
--entry=entry
エントリポイントのシンボルの名前。
--error-limit=value
停止の前に出力するエラーの最大の数。0 の値は、制限がないことを示
します。
--error-unresolved-symbols
エラーとして未解決のシンボルを報告します。
--error-handing-script=script_path
最初の引数として tag、2 番目引数として追加のパラメータを指定し
て、何らかのエラーのとき、スクリプト script_path を呼び出します。
スクリプトは、成功すると 0 を返すことが期待されます。それ以外の値
は、一般的なエラーとみなされます。tag は、不足しているライブラリ
の名前が続く、missing-lib です。undefined-symbol は、未定義のシン
ボルの名前が続きます。
--execute-only
読み込むことができない実行形式セクションをマークします。このオプ
ションは、AArch64 でのみ現在サポートされています。
--exclude-libs=value
静的なライブラリを自動的なエクスポートから除外します。
--export-dynamic, -E
動的なシンボルテーブルに symbol を含めます。
--export-dynamic-symbol=glob
(実行形式) 一致する非ローカルで定義されたシンボルを動的シンボル
テーブルに置きます。(共有オブジェクト) 一致した非ローカルな
STV_DEFAULT シンボルへの参照は、たとえそれが -Bsymbolic,
-Bsymbolic-functions または --dynamic-list によって、別のやり方で
あっても、共有オブジェクト内での定義にバインドされるべきではあり
ません。
--export-dynamic-symbol-list=file
file から動的シンボルのパターンのリストを読み込みます。各パターン
で --export-dynamic-symbol を適用します。
--fatal-warnings
エラーとして警告を扱います。
--filter=value, -F value
DT_FILTER フィールドを指定された値に設定します。
--fini=symbol
ファイナライザ (finalizer) 関数を指定します。
--format=input-format, -b input-format
このオプションに続いている入力の形式を指定します。input-format
は、binary, elf と default の 1 つを指定できます。default は、elf
のための同義語です。
--gc-sections
未使用のセクションのガベージコレクションを有効にします。
--gdb-index
.gdb_index セクションを生成します。
--hash-style=value
ハッシュスタイルを指定します。value は、sysv, gnu または both を
指定できます。both がデフォルトです。
--help ヘルプメッセージを印刷 (表示) します。
--icf=all
同一のコードの折り畳みを有効にします。
--icf=safe
安全な同一のコードの折り畳みを有効にします。
--icf=none
同一のコードの折り畳みを無効にします。
--ignore-data-address-equality
データのアドレスの平等を無視します。C/C++ は、ユニークなアドレス
がある各データを必要とします。このオプションによって lld は、要件
を壊す安全でない最適化を行なうことができます。読み込み専用データ
のコピーを作成するか、または偶然同じ値がある 2 つ以上の読み込み専
用のデータをマージします。
--ignore-function-address-equality
関数のアドレスの平等を無視します。このオプションによって、non-PIC
呼び出しは、共有オブジェクトのデフォルトでない目に見える関数を許
可します。関数は、実行形式と共有オブジェクト内の異なるアドレスが
あります。
--image-base=value
ベースアドレスを value に設定します。
--init=symbol
イニシャライザ (initializer) 関数を指定します。
--keep-unique=symbol
ICF の間に symbol を折りたたみません。
-l libName, --library=libName
使用するライブラリの root の名前。
-L dir, --library-path=dir
ディレクトリをライブラリの検索パスに追加します。
--lto-aa-pipeline=value
LTO の間に実行する AA パイプライン。--lto-newpm-passes とともに使
用されます。
--lto-newpm-passes=value
LTO の間に実行するパス。
--lto-Oopt-level
LTO のための最適化レベル。
--lto-partitions=value
LTO codegen パーティションの数。
-m value
ターゲットのエミュレーションを設定します。
--Map=file, -M file
file へのリンクマップを印刷 (表示) します。
--nmagic, -n
静的なライブラリに対してリンクする整列セクションをページ化しませ
ん。
--no-allow-shlib-undefined
共有ライブラリの未解決の参照を許可しません。このオプションは、実
行形式をリンクするとき、デフォルトで、有効です。
--no-as-needed
常に、共有ライブラリのために DT_NEEDED を設定します。
--no-color-diagnostics
診断で色を使用しません。
--no-define-common
空白を共通シンボルに割り当てません。
--no-demangle
シンボル名を demangle しません。
--no-dynamic-linker
.interp セクションの出力を抑制します。
--no-fortran-common
COMMON シンボルを上書きする定義のためにアーカイブメンバを検索しま
せん。
--no-gc-sections
未使用のセクションのガベージコレクションを無効にします。
--no-gnu-unique
STB_GNU_UNIQUE シンボルのバインディングを無効にします。
--no-merge-exidx-entries
.ARM.exidx エントリのマージを無効にします。
--no-nmagic
整列セクションをページ化します。
--no-omagic
書き込み可能であるテキストデータセクションを設定しません、整列セ
クションをページ化します。
--no-relax
ターゲット特有のの緩和を無効にします。x86-64 について、これは、
R_X86_64_GOTPCRELX と R_X86_64_REX_GOTPCRELX GOT 最適化を無効にし
ます。
--no-rosegment
読み込み専用の実行形式でないセクションをそれら自体のセグメントに
置きません。
--no-undefined-version
未定義のシンボルを参照するバージョンスクリプトを報告します。
--no-undefined
たとえリンカが、共有ライブラリを作成していても、未解決のシンボル
を報告します。
--no-warn-symbol-ordering
ファイルを順序付けしているシンボルがある問題またはグラフプロファ
イルの呼び出しに関して警告しません。
--no-whole-archive
ロードしているアーカイブメンバのデフォルト振る舞いを復元します。
--no-pie, --no-pic-executable
位置独立 (position independent) の実行形式を作成しません。
--noinhibit-exec
それがまだ使用可能なときはいつでも、実行形式の出力ファイルを保持
します。
--nostdlib
コマンド行で指定されたディレクトリのみを検索します。
-o path
出力の実行形式、ライブラリまたはオブジェクトを path に書き込みま
す。指定されないなら、a.out は、デフォルトとして使用されます。
-Ovalue
出力ファイルのサイズを最適化します。value は、次の通りです:
0 文字列マージを無効にします。
1 文字列マージを有効にします。
2 文字列の末尾のマージを有効にします。--compress-debug-sections
が与えられるなら、1 の代わりに圧縮レベル 6 でデバッグセクショ
ンを圧縮します。
-O1 は、デフォルトです。
--oformat=format
出力オブジェクトファイルのための形式を指定します。唯一のサポート
される format (形式) は、ELF ヘッダなしで出力を生成する binary で
す。
--omagic, -N
読み込み可能で、書き込み可能である、テキストとデータセクションを
設定し、整列セクションをページ化せず、静的なライブラリに対してリ
ンクします。
--opt-remarks-filename file
YAML 形式の最適化の備考 (remark) を file に書き込みます。
--opt-remarks-passes pass-regex
pass-regex と一致しているパスを許可するだけによって最適化の意見に
フィルタリングします。
--opt-remarks-with-hotness
最適化の備考 (remark) ファイルにホットネス (hotness) 情報を含めま
す。
--orphan-handling=mode
どのように孤立セクションが処理されるかを制御します。孤立セクショ
ンは、リンカのスクリプトで特に言及されなかったものです。mode は、
次になります:
place
孤立セクションを適切な出力セクションに置きます。
warn
place のために孤立セクションを置き、また警告を報告します。
error
place のために孤立セクションを置き、またエラーを報告します。
place が、デフォルトです。
--pack-dyn-relocs=format
与えられた形式で動的リロケーションをパックします。format は、次に
なります:
none
パックしません。動的リロケーションは、SHT_REL(A) でエンコード
されます。
android
SHT_ANDROID_REL(A) の動的リロケーションをパックします。
relr
SHT_RELR と SHT_REL(A) の動的リロケーションの残りの相対的なリ
ロケーションをパックします。
android+relr
SHT_RELR と SHT_ANDROID_REL(A) の動的リロケーションの残りの相
対的なリロケーションをパックします。
none が、デフォルトです。--use-android-relr-tags が指定されるな
ら、SHT_RELR の代わりに SHT_ANDROID_RELR を使用します。
--pic-veneer
常に、ポジション独立のサンク (thunk) を生成します。
--pie, --pic-executable
ポジション独立 (position independent) の実行形式を作成します。
--power10-stubs=mode
R_PPC64_REL24_NOTOC と TOC/NOTOC インターワーキングののためのコー
ルスタブで Power10 命令を使用するかどうか。mode は、次の通りです:
yes
(デフォルト) use。
auto
現在は、yes と同じです。
no 使用しないでください。
--print-gc-sections
削除された未使用のセクションをリストします。
--print-icf-sections
同一の折りたたまれたセクションをリストします。
--print-map
標準出力にリンクマップを印刷 (表示) します。
--print-archive-stats=file
アーカイブの使用の統計を指定されあファイルに書き込みます。アーカ
イブごとにメンバの数とフェッチされたメンバを印刷 (表示) します。
--push-state
--as-needed, --static と --whole-archive の現在の状態を保存しま
す。
--pop-state
--push-state によって保存された状態を復元します。
--relocatable, -r
リロケーション可能なオブジェクトファイルを作成します。
--reproduce=path
ld.lld --version の出力を含んでいる version.txt と呼はれるコマン
ド行オプションとテキストファイルを含んでいる response.txt と呼ば
れる、テキストファイルをリンクを再生するために必要とされるすべて
の入力ファイルを含んでいる、tar ファイルを path に書き込みます。
アンパックされるときのアーカイブを、同じオプションと入力ファイル
があるリンカを再実行するために使用することができます。
--retain-symbols-file=file
ファイルにリストされたシンボルだけを保持します。
--rpath=value, -R value
DT_RUNPATH を出力に追加します。
--rsp-quoting=value
応答ファイルのための引用スタイル。サポートされた値は、windows と
posix です。
--script=file, -T file
file からリンカスクリプトを読み込みます。複数のリンカのスクリプト
が与えられるなら、あたかも、それらがコマンド行に現れる順序で連結
されるかのように、それらは、処理されます。
--section-start=section=address
セクションのアドレスを設定します。
--shared, --Bsharable
共有オブジェクトを構築します。
--shuffle-sections=seed
出力セクションに一致したセクションをマッピングする前に、与えられ
たシードを使用してそれらをシャッフルします。-1 であるなら、セク
ションの順序を逆にします。0 であるなら、ランダムシードを使用しま
す。
--soname=value, -h value
DT_SONAME を value に設定します。
--sort-common
このオプションは、GNU 互換性のために無視されます。
--sort-section=value
リンカスクリプトが使用されるとき、セクションのソート規則を指定し
ます。
--start-lib
あたかもそれらがともにアーカイブされたかのように、扱われるべきオ
ブジェクトのグループを開始します。
--strip-all, -s
すべてのシンボルを取り除きます。--strip-debug の意味を含みます。
--strip-debug, -S
デバッグ情報を取り除きます。
--symbol-ordering-file=file
file によって指定された順序でセクションをレイアウトします。
--sysroot=value
システムルートを設定します。
--target1-abs
R_ARM_TARGET1 を R_ARM_ABS32 として解釈します。
--target1-rel
R_ARM_TARGET1 を R_ARM_REL32 として解釈します。
--target2=type
type として R_ARM_TARGET2 を解釈します、ここで、type は、rel, abs
または got-rel. の 1 つです。
--Tbss=value
セクション名として .bss がある --section-start と同じです。
--Tdata=value
セクション名として .data がある --section-start と同じです。
--Ttext=value
セクション名として .text の --section-start と同じです。
--thinlto-cache-dir=value
ThinLTO キャッシュされたオブジェクトファイルのディレクトリへのパ
ス。
--thinlto-cache-policy=value
ThinLTO キャッシュのためのポリシを切り取ります。
--thinlto-jobs=value
ThinLTO ジョブの数。
--threads=N
スレッドの数。all (デフォルト) は、サポートされたすべての同時ス
レッドを意味します。1 は、マルチスレッドを無効にします。
--time-trace
時間トレースを記録します。
--time-trace-file=file
時間トレースの出力を file に書き込みます。
--time-trace-granularity=value
時間プロファイラによってトレースされる (マイクロ秒単位の) 最小時
間の粒度。
--trace
入力ファイルの名前を印刷 (表示) します。
--trace-symbol=symbol, -y symbol
symbol への参照をトレースします。
--undefined=symbol, -u symbol
symbol がシンボル解像度の後にシンボルが定義されず、シンボルを定義
するオブジェクトファイルを含んでいる静的なライブラリがあるなら、
出力ファイルにオブジェクトファイルを含めるためにメンバをロードし
ます。
--undefined-glob=pattern
それがグロブ (glob) パターンを取ることを除いて、--undefined と同
義語です。グロブ (glob) パターンにおいて、* は、0 以上の文字に一
致し、? は、あらゆる単一の文字と一致し、[...] は、ブラケット内の
文字と一致します。与えられたパターンと一致しているすべてのシンボ
ルは、あたかもそれらが --undefined の引数として与えられるかのよう
に、処理されます。
--unique
孤立した入力セクションごとに個別の出力セクションを作成します。
--unresolved-symbols=value
どのように未解決のシンボルを処理するかを決定します。
--use-android-relr-tags
SHT_RELR / DT_RELR* の代わりに SHT_ANDROID_RELR /
DT_ANDROID_RELR* タグを使用します。
-v バージョン番号を表示し、オブジェクトファイルが指定されるなら、リ
ンクを続行します。
-V, --version
バージョン番号を表示して、終了します。
--verbose
冗長なモード。
--version-script=file
file からバージョンスクリプトを読み込みます。
--warn-backrefs
逆のまたは周期的な依存状態または静的なアーカイブの間に関して警告
します。これは、古い Unix に似たリンカとの互換性を残すリンカの呼
び出しを保証するために使用することができます。
--warn-backrefs-exclude=glob
--warn-backrefs のために無視されるべきアーカイブ (または --start
lib 内のオブジェクトファイル) を記述するグロブ (ファイル名置換)。
--warn-common
重複する共通シンボルに関して警告します。
--warn-ifunc-textrel
テキストリロケーションとともに ifunc シンボルを使用することについ
て警告します。glibc ライブラリ (2.28 以前) の古いバージョンは、そ
れらがリロケーションされるときに実行形式ではないようにマークされ
る ifunc シンボルを含むセグメントを引き起こすバグがあります。結果
として、プログラムは、コンパイルし、成功してリンクしますが、命令
ポインタが ifunc シンボルに到達するとき、セグメンテーションフォル
トとなります。コードが ifunc シンボルを含むかもしれないなら、lld
に警告を与えさせるために、-warn-ifunc-textrel を使用します、テキ
ストのリロケーションを行ない、古い glibc バージョンとリンクされま
す。そうでなければ、デフォルト値が警告を与えないように、それを使
用する必要がありません。このフラグは、2018 年遅くに導入され、ld
とゴールドリンカのカウンタ部分がなく、将来削除されるかもしれませ
ん。
--warn-unresolved-symbols
警告として未解決のシンボルを報告します。
--whole-archive
静的なライブラリのすべてのメンバのロードを強制します。
--why-extract=file
アーカイブメンバが抽出される理由に関してファイルに印刷 (出力) し
ます。
--wrap=symbol
__wrap_symbol と __real_symbol 参照への symbol 参照を symbol にリ
ダイレクトします。
-z option
リンカオプションの展開。
dead-reloc-in-nonalloc=section_glob=value
value への破棄されたシンボルを参照している一致した非
SHF_ALLOC セクションのリロケーションを解決します。複数の
オプションに一致するセクションの場合の受け付けられるグロ
ブ (ファイル名置換)、最後のオプションが優先されます。最小
の特有のものから最も特有のもの一致の順序が、推奨されてい
ます。
execstack
メインスタックを実行可能とします。スタックのパーミッショ
ンは、PT_GNU_STACK セグメントに記録されます。
bti-report=[none|warning|error]
欠落している GNU_PROPERTY_AARCH64_FEATURE_1_BTI プロパ
ティを報告する方法を指定します。none は、デフォルトで、リ
ンカは、欠落しているプロパティを報告しません、そうでなけ
れば、警告またはエラーとして報告されます。
cet-report=[none|warning|error]
欠落している GNU_PROPERTY_X86_FEATURE_1_IBT または
GNU_PROPERTY_X86_FEATURE_1_SHSTK プロパティを報告する方法
を指定します。none は、デフォルトで、リンカは、欠落してい
るプロパティを報告しません、そうでなければ、警告またはエ
ラーとして報告されます。
force-bti
PLT の AArch64 BTI 命令を強制的に有効にし、入力 ELF ファ
イルに GNU_PROPERTY_AARCH64_FEATURE_1_BTI プロパティがあ
るなら、警告します。
force-ibt
PLT の Intel 間接分岐トラックイングを強制的に有効にし、
入力 ELF ファイルに GNU_PROPERTY_X86_FEATURE_1_IBT プロパ
ティがないなら、警告します。
global DYNAMIC セクションの DF_1_GLOBAL flag in the フラグを設定
します。異なったローダは、どのようにそれら自体のこのフラ
グを処理するかを決定することができます。
ifunc-noplt
ifunc シンボルのための PLT 入力を出力しません。代わりに、
リゾルバを参照しているテキストリロケーションを出力しま
す。これは、実験的な最適化であり、テキストリロケーション
が通常の欠点を持たないスタンドアロンの環境のためにたけに
適切です。このオプションは、-z notext オプションと組み合
わされなければなりません。
initfirst
モジュールが最初に初期化されるべきであることを示すために
DF_1_INITFIRST フラグを設定します。
interpose
オブジェクトがインターポーザ (interposer) である実行時リ
ンカを示すために DFX1XINTERPOSE DF_1_INTERPOSE フラグを設
定します。他の依存状態の前でなく、シンボル解決のインター
ポーザ (interposer) がアプリケーションの後に検索される
間。
muldefs
シンボルが、複数回定義されるなら、エラーではありません。
最初の定義が、使用されます。これは、--allow-multiple-
definition. のための同義語です。
nocombreloc
結合とソートの複数のリロケーションセクションを無効にしま
す。
nocopyreloc
コピーのリロケーションの作成を無効にします。
nodefaultlib
デフォルトのライブラリ検索パスが無視されるべきですことを
示すために、DF_1_NODEFLIB フラグを設定します。
nodelete
オブジェクトがプロセスからアンロードできないことを示すた
めに DF_1_NODELETE フラグを設定します。
nodlopen
オブジェクトが dlopen(3) によってオープンされないことを示
すために DF_1_NOOPEN フラグを設定します。
nognustack
PT_GNU_STACK セグメントを出力しません。
norelro
初期のリロケーション処理の後に、オブジェクトの部分が、読
み込み専用でマップされるべきであることを示しません。オブ
ジェクトは、PT_GNU_RELRO セグメントを省略します。
notext 読み込み専用のセグメントに対してリロケーションを許可しま
す。DYNAMIC セクションに DT_TEXTREL フラグを設定します。
now 実行時ローダが、オブジェクトの初期化の一部として処理して
いるすべてのリロケーションを実行するべきであることを示す
ために DF_BIND_NOW フラグを設定します。デフォルトで、リロ
ケーションは、オンデマンド (demand) で実行されます。
origin オブジェクトが $ORIGIN 処理を必要とすることを示すために
DF_ORIGIN フラグを設定します。
pac-plt
AArch64 だけ、PLT のポインタ認証を使用します。
rel 動的リロケーションのために REL 形式を使用します。
rela 動的リロケーションのために RELA 形式を使用します。
retpolineplt
CVE-2017-5715 のための緩和 (mitigation) として retpoline
形式 PLT エントリを出力します。
rodynamic
読み込み専用の .dynamic セクションを作成します。DT_DEBUG
タグは、出力されません。
separate-loadable-segments
separate-code
noseparate-code
2 つの隣接した PT_LOAD セグメントが、ページでオーバラップ
することが許可されるかどうかを指定します。noseparate-code
(デフォルト) は、オーバラップを許可します。separate-code
は、2 つの実行形式なセグメント、または 2 つの非実行形式セ
グメントの間のオーバラップを許可します。separate-
loadable-segments は、オーバラップを許可しません。
shstk x86 だけ、シャドウ (shadow) スタックを使用します。
stack-size=size
メインスレッドのスタックサイズを size に設定します。ス
タックサイズは、size のサイズとして記録されます。
PT_GNU_STACK プログラムセグメント。
start-stop-gc
__start_/__stop_ 参照に関連する C 識別子名のセクションを
保持しません (デフォルト)。
nostart-stop-gc
__start_/__stop_ 参照に関連する C 識別子名のセクションを
保持しません。
text 読み込み専用のセグメントに対してリロケーションを許可しま
せん。これは、デフォルトです。
wxneeded
PT_OPENBSD_WXNEEDED セグメントを作成します。
実装に関する注
(.a のファイル拡張子がある) アーカイブファイルの ld.lld の扱いは、Unix 似
たシステムで使用された古いリンカと異なります。
古いリンカは、リンクの間に未定義なシンボルのセットを維持しています。リン
カは、未定義なシンボルのセットが空になるまで、コマンド行でそれが現れる順
序で各ファイルを処理します。オブジェクトファイルは、セットに追加された未
定義シンボルでそれに遭遇するとき、出力オブジェクトにリンクされます。アー
カイブファイルに遭遇すると、古いリンカは、その中に含まれているオブジェク
トを検索し、未解決の安全なシンボルが設定する、それらを処理します。
相互に依存的なアーカイブを処理することは、古いリンカを使用するとき、扱い
にくいかもしれません。指定された複数の時間、または特別なコマンド行オプ
ション --start-group と --end-group でなければならないアーカイブファイル
は、新しいシンボルがセットに追加されなくなるまで、グループのファイルを越
えて、ループするリンカを保持するために使用されます。
ld.lld は、それがコマンド行の引数の上に繰り返すようにオブジェクトとアーカ
イブで見つかるすべてのシンボルを記録します。ld.lld が、以前に処理された
アーカイブファイルに含まれているオブジェクトファイルによって解決すること
がきる未定義のシンボルに遭遇するとき、それは、直ちに抽出し、それを出力オ
ブジェクトにリンクします。
特定のアーカイブ入力で、ld.lld は、古いリンカと比較して異なった結果を生成
します。実際に、サードパーティのソフトウェアの大きな本体は、実質的な問題
なしで ld.lld でリンクされます。
--warn-backrefs オプションは、古い Unix に似たリンカの振る舞いとの互換性
がない、リンカ呼び出しを識別するために使用することできます。
FreeBSD 13.2 May 12, 2019 FreeBSD 13.2