GELF_NEWEHDR(3) | FreeBSD Library Functions Manual | GELF_NEWEHDR(3) |
名称
elf32_newehdr, elf64_newehdr, gelf_newehdr — オブジェクトファイルヘッダを検索するか、または割り付けるライブラリ
ELF Access Library (libelf, -lelf)書式
#include < libelf.h> Elf32_Ehdr *
elf32_newehdr( Elf *elf);
Elf64_Ehdr *
elf64_newehdr( Elf *elf);
#include < gelf.h>
void *
gelf_newehdr( Elf *elf, int elfclass);
解説
これらの関数は、 ELF 記述子 elf から ELF ヘッダを検索し、必要なら、新しいヘッダを割り付けます。ファイルデータ構造は、 elf(3) で説明されるように、それらのメモリ内表現に変換します。関数 elf32_newehdr() は、32 ビットの Elf32_Ehdr 構造へのポインタを返します。関数 elf64_newehdr() は、64 ビットの Elf64_Ehdr 構造へのポインタを返します。
引数 elfclass に値 ELFCLASS32 があるとき、関数 gelf_newehdr() は、 elf32_newehdr( elf) によって返された値を返します。引数 elfclass に値 ELFCLASS64 があるとき、それは elf64_newehdr( elf) によって返された値を返します。
新しいヘッダ構造を割り付けるなら、構造体のメンバは、次のように初期化されます:
- e_ident[EI_MAG0..EI_MAG3]
- オフセット EI_MAG0, EI_MAG1, EI_MAG2 の EI_MAG3 の識別バイトは、 ELF シグネチャ (署名) に設定されます。
- e_ident[EI_CLASS]
- オフセット EI_CLASS の識別バイトは、呼び出された関数に関連している ELF のクラス、または、関数 gelf_newehdr() のための引数 elfclass に設定されます。
- e_ident[EI_DATA]
- オフセット EI_DATA の識別バイトは、 ELFDATANONE に設定されます。
- e_ident[EI_VERSION]
- オフセット EI_VERSION の識別バイトは、 elf_version(3) への前の呼び出しによって設定された ELF ライブラリの操作バージョンに設定されます。
- e_machine
- は、 EM_NONE に設定されます。
- e_type
- は、 ELF_K_NONE に設定されます。
- e_version
- は、 elf_version(3) への前の呼び出しで設定された ELF ライブラリの操作バージョンに設定されます。
ヘッダの他のメンバは、0 に設定されます。アプリケーションは、 elf_update() を呼び出す前に必要に応じて、これらの値を変更する責任があります。
成功するなら、これらの 3 つの関数は、ELF 記述子 elf に ELF_F_DIRTY フラグを設定します。
戻り値
これらの関数は、成功するなら、変換されたヘッダ記述子へのポインタを返し、失敗すれば、NULL を返します。エラー
これらの関数は、次のエラーで失敗するかもしれません:- [ ELF_E_ARGUMENT]
- 引数 elf は NULL でした。
- [ ELF_E_ARGUMENT]
- 引数 elf は ELF iオブジェクトのための記述子ではありませんでした。
- [ ELF_E_ARGUMENT]
- 引数 elfclass には、サポートされない値がありました。
- [ ELF_E_ARGUMENT]
- ELF 記述子 elf のクラスは、要求された操作のものに一致しませんでした。
- [ ELF_E_ARGUMENT]
- 関数 gelf_newehdr() に関して、引数 elf のクラスは、 ELFCLASSNONE でなく、引数 elfclass に一致しませんでした。
- [ ELF_E_CLASS]
- 記述子 elf の ELF のクラスは、呼び出される API 関数のものに一致しませんでした。
- [ ELF_E_HEADER]
- 不正な形式の ELF ヘッダが検出されました。
- [ ELF_E_RESOURCE]
- メモリ不足の状態が実行の間に検出されました。
- [ ELF_E_SECTION]
- 引数 elf の ELF 記述子が、拡張された番号付けに使用される規約を順守しませんでした。
- [ ELF_E_VERSION]
- ELF 記述子 elf には、サポートされない ELF バージョン番号がありました。
関連項目
elf(3), elf32_getehdr(3), elf64_getehdr(3), elf_flagdata(3), elf_getident(3), elf_update(3), elf_version(3), gelf(3), gelf_getehdr(3), elf(5)October 22, 2007 | FreeBSD |