日本語 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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
ELF_UPDATE(3) FreeBSD ライブラリ関数マニュアル ELF_UPDATE(3) 名称 elf_update -- ELF 記述子を更新する ライブラリ ELF 解析ライブラリ (libelf, -lelf) 書式 #include <libelf.h> off_t elf_update(Elf *elf, Elf_Cmd cmd); 解説 関数 elf_update() によって、ライブラリは、ELF オブジェクトの構造を再計算 し、オプションでオブジェクトのイメージをファイルに書き込みます。 引数 elf は、有効な ELF 記述子を参照するべきです。 引数 cmd は、次の値の 1 つを指定することができます: ELF_C_NULL ライブラリは、ELF_F_DIRTY フラグで変更された構造体の構造 的な情報を再計算しますが、データを基本的なファイルイメー ジに書き込みません。 ELF_C_WRITE ライブラリは、構造的な情報について再計算し、新しいイメー ジを基本的なファイルに書き込みます。引数 elf によって参照 される ELF 記述子は、書き込みまたは更新される基本な ELF オブジェクトを許可するべきです (elf_begin(3) を参照)。 記述子 elf に関連した Elf_Scn と Elf_Data 記述子へのすべてのポインタは、 elf_update() への呼び出しの後に無効であると見なされるべきです。 オブジェクトのレイアウトの指定 ELF 解析ライブラリ (libelf, -lelf) は、2 つのレイアウトモードをサポートし ます。 ライブラリのレイアウト ELF_F_LAYOUT フラグが ELF 記述子で設定されないなら、ELF ライブラ リは、次のスキームによって ELF オブジェクトをレイアウトします: EHDR ELF 実行形式のヘッダは、オブジェクトの最初に置かれ ます。 PHDR ELF 記述子がプログラムのヘッダテーブルを含んでいる なら、それは、実行形式のヘッダの後に置かれます。 セクションデータ ELF セクションデータは、存在するなら、保持されてい る各セクションの整列要求を考慮して、次に置かれま す。 SHDR ELF セクションヘッダテーブルは、存在するなら、最後 に置かれます。 制御されたアプリケーションのレイアウト アプリケーションは、ELF 記述子で ELF_F_LAYOUT フラグを設定するこ とによって、ELF オブジェクトのレイアウトの完全な制御をすることが できます (elf_flagelf(3) を参照)。この場合に、ライブラリは、下記 のようにアプリケーションに供給された情報を使用して、ELFオブジェク トをレイアウトします: EHDR ELF 実行形式のヘッダは、オブジェクトの最初に置かれ ます。 PHDR ELF プログラムのヘッダテーブルは、存在するなら、そ れは、ELF 実行形式のヘッダの e_phoff フィールドで指 定されたオフセットに置かれます。 セクションデータ 各 ELF セクションのデータは、セクションのヘッダの sh_offset フィールドによって指定されたオフセットに 置かれます。セクションのサイズは、セクションのヘッ ダの sh_size フィールドから取られます。 SHDR ELF セクションのヘッダテーブルは、存在するなら、実 行形式のヘッダの e_shoff フィールドによって指定され たオフセットに置かれます。 ファイルの内容の範囲のギャップは、elf_fill(3) によって指定された満たされ た値に設定されます。 供給されたアプリケーションの情報 アプリケーションは、elf_update() を呼び出す前に ELF 記述子に関連したデー タ構造の次のフィールドを設定する必要があります。 実行形式ヘッダ アプリケーションによって設定される必要がある ELF 実行形式のヘッダ のフィールドは、次の通りです: e_entry 実行形式のために要求されるエントリアドレスに設 定されます。 e_flags 要求されたプロセッサ特有のフラグに設定されま す。 e_ident[EI_DATA] ELFDATA2LSB または ELFDATA2MSB の 1 つを設定し なければなりません。 e_ident[EI_OSABI] 要求された OS ABI に設定されます。例えば、 FreeBSD の実行形式について、このフィールドは、 ELFOSABI_FREEBSD に設定されるべきです。 e_machine 要求されたマシンのアーキテクチャをヘッダファイ ルを <elfdefinitions.h> の EM_* 値の 1 つに設 定されます。 e_phoff アプリケーションがオブジェクトのレイアウトを管 理しているなら、このフィールドを ELF プログラ ムヘッダテーブルのファイルオフセットに設定しな ければなりません。 e_shoff アプリケーションがオブジェクトのレイアウトを管 理しているなら、このフィールドを ELF セクショ ンヘッダテーブルのファイルオフセットに設定しな ければなりません。 e_shstrndx セクション名を含んでいる文字列テーブルのイン デックスに設定されます。 e_type ELF オブジェクトのタイプをヘッダファイル <elfdefinitions.h> の ET_* 値の 1 つに設定され ます。 e_version ELF オブジェクトの要求されたバージョンに設定さ れます。 プログラムヘッダ プログラムのヘッダテーブルのエントリのすべてのフィールドは、アプ リケーションによって設定される必要があります。 セクションヘッダ アプリケーションによって設定される必要がある ELF セクションのヘッ ダのフィールドは、次の通りです: sh_addr セクションが存在するべきメモリアドレスに設定されま す。 sh_addralign アプリケーションがファイルレイアウトを管理している なら、このフィールドをセクションの内容のために必要 な整列に設定しなければなりません。この値は、2 のべ き乗でなければなりません、そしてセクションに関連し たあらゆる Elf_Data 記述子によって必要とされる最大 の整列と少なくとも同じくらい大きくなければなりませ ん。 sh_entsize 固定サイズの要素を含んでいるセクションに対して、各 エントリのサイズに設定され、固定サイズの要素のない セクションに対して、0 に設定されます。アプリケー ションがファイルレイアウトを管理していないなら、タ イプがライブラリに知られているそれらのセクションの ために 0 として、このフィールドを残します。 sh_flags 要求されたセクションフラグに設定されます。 sh_info elf(5) に説明されるように設定されます。 sh_link elf(5) に説明されるように設定されます。 sh_name セクション名を含んでいる文字列テーブルのセクション の名前のインデックスに設定されます。 sh_offset アプリケーションがファイルレイアウトを管理している なら、このフィールドをセクションの内容のファイルオ フセットに設定しなければなりません。 sh_size アプリケーションがファイルレイアウトを管理している なら、このフィールドをセクションの内容のファイルサ イズに設定しなければなりません。 sh_type セクションのタイプに設定されます。 セクションデータ 各セクションに関連している Elf_Data 記述子は、その内容を指定しま す (elf_getdata(3) を参照)。これらの記述子のすべてのフィールドが アプリケーションの制御の下にある間に、次のフィールドは、オブジェ クトのレイアウトに影響を及ぼします: d_align 要求された整列を記述子のデータの含まれているセクショ ン内に設定されます。 d_off アプリケーションが管理されているオブジェクトのレイア ウトであるなら、記述子のデータが、置かれるべきである セクション内に、このフィールドをファイルのオフセット に設定しなければなりません。 d_size 記述子のデータのメモリ表現のバイト単位のサイズに設定 されます。 戻り値 関数 elf_update() は、成功するなら、ファイルイメージの合計サイズを返し、 エラーが生じるなら、-1 を返します。 エラー これらの関数は、次のエラーで失敗するかもしれません: [ELF_E_ARGUMENT] 引数 elf が NULL でした。 [ELF_E_ARGUMENT] 引数 cmd が認識されませんでした。 [ELF_E_ARGUMENT] 引数 elf が、ELF オブジェクトのための記述子ではありませ んでした。 [ELF_E_CLASS] 引数 elf の実行形式ヘッダの e_ident[EI_CLASS] フィール ドは、ファイルのクラスに一致しませんでした。 [ELF_E_DATA] 引数 elf に含まれている Elf_Data 記述子が、サポートされ ていないタイプを指定しました。 [ELF_E_DATA] Elf_Data 記述子が、0 であったか、2 のべき乗でなかった整 列を指定しました。 [ELF_E_HEADER] 引数 elf の ELF ヘッダは、既にファイルに関連しているバ イト順序と異なったバイト順序を要求しました。 [ELF_E_IO] I/O エラーに遭遇しました。 [ELF_E_LAYOUT] 引数 elf に含まれた Elf_Data 記述子が、セクションを含む のと不適合である整列を指定しました。 [ELF_E_LAYOUT] 引数 elf が、範囲でオーバラップしたセクション記述子を含 んでいました。 [ELF_E_LAYOUT] 引数 elf が、間違って整列されたか、またはそれらのデータ に対して小さすぎたセクション記述子を含んでいました。 [ELF_E_LAYOUT] フラグ ELF_F_LAYOUT が、Elf 記述子に設定され、プログラ ムのヘッダテーブルでオーバラップされた実行形式のヘッダ に設定されました。 [ELF_E_LAYOUT] フラグ ELF_F_LAYOUT が、Elf 記述子に設定され、プログラ ムのヘッダテーブルが、整列されていないファイルのオフ セットに置かれました。 [ELF_E_LAYOUT] フラグ ELF_F_LAYOUT が、Elf 記述子に設定され、セクショ ンのヘッダテーブルが、セクション記述子によってマップさ れた範囲をオーバラップしました。 [ELF_E_LAYOUT] ELF_F_LAYOUT フラグが、Elf 記述子で設定され、Elf_Data 記述子の d_offset フィールドが、複数の記述子の指定され た整列でなかった値を含んでいました。 [ELF_E_MODE] ELF_C_WRITE 操作が、書き込みまたは更新用にオープンされ なかった ELF 記述子で要求されました。 [ELF_E_SECTION] 引数 elf は、認識されていないタイプがあるセクションを含 みました。 [ELF_E_SECTION] インデックス SHN_UNDEF のセクションヘッダには、不正なセ クションタイプがありました。 [ELF_E_SEQUENCE] ELF_C_WRITE 操作が、基本的なファイルから ELF 記述子 elf を分離された elf_cntl(elf, ELF_C_FDDONE) への前の呼び出 しの後に要求されました。 [ELF_E_VERSION] 引数 elf がサポートされないバージョンであるか、またはサ ポートされないバージョンで Elf_Data 記述子を含みまし た。 関連項目 elf(3), elf32_getehdr(3), elf32_getphdr(3), elf32_newehdr(3), elf32_newphdr(3), elf64_getehdr(3), elf64_getphdr(3), elf64_newehdr(3), elf64_newphdr(3), elf_begin(3), elf_cntl(3), elf_fill(3), elf_flagehdr(3), elf_flagelf(3), elf_getdata(3), elf_getscn(3), elf_newdata(3), elf_newscn(3), elf_rawdata(3), gelf(3), gelf_newehdr(3), gelf_newphdr(3), elf(5) FreeBSD 11.2 August 14, 2011 FreeBSD 11.2