GELF_GETPHDR(3) | FreeBSD Library Functions Manual | GELF_GETPHDR(3) |
名称
elf32_getphdr, elf64_getphdr, gelf_getphdr — ELF プログラムヘッダテーブルを検索するライブラリ
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_Phdr と Elf64_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 バージョン番号がありました。
関連項目
elf(3), elf32_getehdr(3), elf32_newphdr(3), elf64_getehdr(3), elf64_newphdr(3), elf_flagphdr(3), elf_getphnum(3), gelf(3), gelf_getehdr(3), gelf_newphdr(3), gelf_update_phdr(3), elf(5)October 21, 2007 | FreeBSD |