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

名称

elf32_getphdr, elf64_getphdr, gelf_getphdrELF プログラムヘッダテーブルを検索する

ライブラリ

ELF Access Library (libelf, -lelf)

書式

#include < libelf.h>

Elf32_Phdr *
elf32_getphdr( Elf *elf);

Elf64_Phdr *
elf64_getphdr( Elf *elf);

#include < gelf.h>

GElf_Phdr *
gelf_getphdr( Elf *elf, int index, GElf_Phdr *dst);

解説

これらの関数は、この情報が存在しているなら、ELF 記述子から ELF プログラムヘッダ情報を検索して、変換します。

関数 elf32_getphdr() と elf64_getphdr() は、それぞれ変換された Elf32_PhdrElf64_Phdr 記述子の配列へのポインタを返します。これらの記述子は、 elf(5) で説明されています。この配列のエントリの数は、 elf_getphnum(3) 関数を使用して決定されます。

関数 gelf_getphdr() は、ELF 記述子 elf からのインデックス index でプログラムヘッダテーブルエントリを検索します。変換されたプログラムヘッダテーブルエントリは、引数 dst によって指されたアドレスに書き込まれます。

アプリケーションは、 elf_flagphdr(3) API を使用することによって、プログラムヘッダテーブルエントリへの変更をライブラリに知らせます。 gelf(3) インタフェースを使用するアプリケーションは、基本的な ELF 記述子にプログラムヘッダエントリへの変更をコピーして戻すために gelf_update_phdr(3) API を使用する必要があります。

戻り値

関数は、成功するなら、有効なポインタを返し、エラーに遭遇した場合は、NULL を返します。

エラー

これらの関数は、次のエラーで失敗するかもしれません:
[ ELF_E_ARGUMENT]
引数 elf は NULL でした。
[ ELF_E_ARGUMENT]
引数 elf は ELF オブジェクトのための記述子ではありませんでした。
[ ELF_E_ARGUMENT]
引数 dst は NULL でした。
[ ELF_E_ARGUMENT]
インデックス index は範囲外でした。
[ ELF_E_CLASS]
ELF 記述子 elf のクラスは、呼び出される関数の期待されたクラスと一致しませんでした。
[ ELF_E_HEADER]
ELF 記述子 elf は、実行形式のヘッダを所有していませんでした。
[ ELF_E_HEADER]
ELF 記述子 elf には、不正な実行形式のヘッダがありました。
[ ELF_E_RESOURCE]
メモリ不足の状態が検出されました。
[ ELF_E_SECTION]
引数 elf の ELF 記述子が、拡張された番号付けに使用される規約を順守しませんでした。
[ ELF_VERSION]
ELF 記述子 elf には、サポートされない ELF バージョン番号がありました。
October 21, 2007 FreeBSD