EN JA
GELF(3)
GELF(3) FreeBSD Library Functions Manual GELF(3)

名称

GElfELF 操作のためのクラスから独立している API

ライブラリ

ELF Access Library (libelf, -lelf)

書式

#include < gelf.h>

解説

このマニュアルページは、ELF オブジェクトを操作するためのクラス独立の API について説明しています。この API によって、アプリケーションは、記述子の ELF のクラスを知る必要なしに ELF 記述子を操作することができます。

GElf API は、制限のない ELF API と平行して使用できます。

GElf データ構造

GElf API は、次のクラスから独立しているデータ構造を定義します:
GElf_Addr
ELF アドレスの表現。
GElf_Dyn
ELF の .dynamic セクションエントリのクラスから独立している表現。
GElf_Ehdr
ELF 実行形式ヘッダのクラスから独立している表現。
GElf_Half
符号なし 16 ビット量。
GElf_Off
ELF オフセットのクラスから独立している表現。
GElf_Phdr
ELF プログラムヘッダテーブルエントリのクラスから独立している表現。
GElf_Rel
ELF 再配置エントリのクラスから独立している表現。
GElf_Rela
加数 (addend) がある ELF 再配置エントリのクラスから独立している表現。
GElf_Shdr
ELF セクションヘッダテーブルエントリのクラスから独立している表現。
GElf_Sword
符号付き 32 ビット量。
GElf_Sxword
符号付き 64 ビット量。
GElf_Sym
ELF シンボルテーブルエントリのクラスから独立している表現。
GElf_Word
符号なし 32 ビット量。
GElf_Xword
符号なし 64 ビット量。

これらのデータ構造は、対応する 64 ビットの ELF 構造と互換性があるサイズであり、それらの 64 ビットのクラスに依存する対応物と同じ内部の構造を持ちます。クラスに依存する ELF 構造は、 elf(5) で説明されています。

Elf プログラミングモデル

GElf 関能は、常に基本的な (クラスに依存する) ELF データ構造の コピー を返します。 GElf のプログラミングモデルは、次の通りです:
  1. アプリケーションは、 gelf_get_*() 関数を使用して ELF 記述子からのデータを検索します。これは、プライベートな GElf_* データ構造にデータを全てコピーします。
  2. アプリケーションは、GElf 構造のプライベートなコピーで動作します。
  3. いったん行われると、アプリケーションは、 gelf_update_*() 関数を使用して基本的な ELF データ構造に新しい値をコピーして戻します。
  4. 次に、アプリケーションは、ELF データ構造が dirty (汚い) であることを ELF ライブラリに示すために elf_flag*() API を使用します。

基本的な 32 ビットの ELF データ構造を更新するとき、 GElf 値が基本的な ELF データタイプの範囲外であるなら、 GElf ルーチンは、エラーシグナルを生成します。

名前空間の使用

GElf インタフェースは、次のシンボルを使用します:
GElf_*
クラスから独立しているデータタイプ。
gelf_*
API セットで定義された関数用。

GElf プログラミング API

このセクションは、API プログラミング API の概要を提供しています。詳細については、ここにリストされたそれぞれの関数マニュアルページで提供されています。
ELF データ構造を割り付ける
gelf_newehdr()
新しい ELF 実行形式ヘッダを割り付ける。
gelf_newphdr()
新しい ELF プログラムヘッダテーブルを割り付ける。
データ変換
gelf_xlatetof()
ELF データ構造のネイティブの表現をファイル表現に変換する。
gelf_xlatetom()
ELF データ構造のファイル表現をネイティブの表現に変換する。
ELF データの検索
gelf_getdyn()
ELF の .dynamic エントリを検索する。
gelf_getehdr()
基本的な ELF 記述子から ELF 実行形式のヘッダを検索する。
gelf_getphdr()
基本的な ELF 記述子から ELF プログラムヘッダテーブルエントリを検索する。
gelf_getrel()
ELF 再配置エントリを検索する。
gelf_getrela()
加数 (addend) で ELF 再配置エントリを検索する。
gelf_getshdr()
基本的な ELF 記述子から ELF セクションヘッダテーブルエントリを検索する。
gelf_getsym()
ELF シンボルテーブルエントリを検索する。
クエリ (問い合わせ)
gelf_checksum()
ELF 記述子のための ELF チェックサムを検索する。
gelf_fsize()
ELF タイプのファイル表現のサイズを検索する。
gelf_getclass()
ELF 記述子の ELF のクラスを検索する。
ELF データの更新
gelf_update_dyn()
ELF の .dynamic テーブルエントリをコピーして戻す。
gelf_update_phdr()
ELF プログラムヘッダテーブルエントリをコピーして戻す。
gelf_update_rel()
ELF 再配置エントリをコピーして戻す。
gelf_update_rela()
加数エントリで ELF 再配置をコピーして戻す。
gelf_update_shdr()
ELF セクションヘッダテーブルエントリをコピーして戻す。
gelf_update_sym()
ELF シンボルテーブルエントリをコピーして戻す。

関連項目

elf(3), elf(5)

歴史

GELF(3) API は、System V Release 4 ではじめて登場しました。 API のこの実装は、 FreeBSD 7.0 ではじめて登場しました。

作者

GElf API は、 Joseph Koshy <jkoshy@FreeBSD.org>によって実装されました。
September 1, 2006 FreeBSD