インテルのみ表示可能 — GUID: iga1409352736780
Ixiasoft
インテルのみ表示可能 — GUID: iga1409352736780
Ixiasoft
7.9.1. Linux ツールチェーンの再配置情報
R_NIOS2_TLS_DTPMOD |
R_NIOS2_TLS_DTPREL |
R_NIOS2_TLS_TPREL |
R_NIOS2_COPY |
R_NIOS2_GLOB_DAT |
R_NIOS2_JUMP_SLOT |
R_NIOS2_RELATIVE |
R_NIOS2_GOT16、R_NIOS2_GOT_LO、および / または R_NIOS2_GOT_HA を使用して参照されるグローバル・オフセット・テーブル (GOT) エントリーは、ロード時に解決される必要があります。R_NIOS2_CALL16、R_NIOS2_CALL_LO および / または R_NIOS2_CALL_HA を使用してのみ参照される GOT エントリーは、最初にプロシージャー・リンケージ・テーブル (PLT) エントリーを参照してから、遅延し解決されます。
TP 相対再配置は 16 ビット再配置のため、ローカル動的またはローカル実行可能なスレッドローカル・ストレージ (TLS) を使用する動的オブジェクトは、64 KB 以上の TLS データは持てません。将来これをサポートするために、新しい再配置が追加される可能性があります。
次の表に示すように、Linux 固有の再配置を生成するために、いくつかの新しいアセンブラー演算子が定義されています。
再配置 | 演算子 |
---|---|
R_NIOS2_GOT16 | %got |
R_NIOS2_CALL16 | %call |
R_NIOS2_GOTOFF_LO | %gotoff_hiadj |
R_NIOS2_GOTOFF_HA | %gotoff_lo |
R_NIOS2_PCREL_LO | %hiadj |
R_NIOS2_PCREL_HA | %lo |
R_NIOS2_TLS_GD16 | %tls_gd |
R_NIOS2_TLS_LDM16 | %tls_ldm |
R_NIOS2_TLS_LDO16 | %tls_ldo |
R_NIOS2_TLS_IE16 | %tls_ie |
R_NIOS2_TLS_LE16 | %tls_le |
R_NIOS2_TLS_DTPREL | %tls_ldo |
R_NIOS2_GOTOFF | %gotoff |
R_NIOS2_GOT_LO | %got_lo |
R_NIOS2_GOT_HA | %got_hiadj |
R_NIOS2_CALL_LO | %call_lo |
R_NIOS2_CALL_HA | %call_hiadj |
%hiadj演算子と %lo演算子は、再配置される表現が PC 相対であるかどうかに応じて、PC 相対再配置または PC 非相対再配置を生成します。例えば、%hiadj(_gp_got - .)は R_NIOS2_PCREL_HA を生成します。%tls_ldoは、即値オペランドとして使用される場合は R_NIOS2_TLS_LDO16 を生成し、.wordディレクティブとともに使用する場合は R_NIOS2_TLS_DTPREL を生成します。