ELF_MEMORY(3) | FreeBSD Library Functions Manual | ELF_MEMORY(3) |
名称
elf_memory — メモリにマップされた ELF または ar(1) アーカイブを処理ライブラリ
ELF Access Library (libelf, -lelf)解説
関数 elf_memory() は、イメージがメモリに存在している ELF ファイルまたは ar(1) アーカイブを処理するために使用されます。引数 image は、ファイルまたはアーカイブのメモリイメージの始まりを指します。引数 size は、メモリイメージのバイト単位のサイズを含んでいます。
ELF 記述子は、読み込みのために作成されます (すなわち、 ELF_C_READのコマンド引数値をつけて elf_begin(3) を使用するのに似ています)。
戻り値
関数 elf_memory() は、成功すれば、新しい ELF 記述子へのポインタを返し、エラーが起こったなら、NULL を返します。返り値は、 elf_kind(3) を使用するファイルタイプのために問い合わされます。
使用例
elf ファイルを読み込んで解析するためには、次を使用します:
int fd; void *p; struct stat sb; Elf *e; ... if ((fd = open("./elf-file", O_RDONLY)) < 0 || fstat(fd, &sb) < 0 || (p = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, (off_t) 0)) == MAP_FAILED) { ... システムエラーを扱う ... } if ((e = elf_memory(p, sb.st_size)) == NULL) { ... elf(3) エラー扱う ... } ... ここで ELF 記述子 "e"を使用する ...
エラー
関数 elf_memory() は、次のエラーで失敗します:- [ ELF_E_ARGUMENT]
- 引数 image のために NULL 値を使用したか、または引数 sz の値が 0 でした。
- [ ELF_E_HEADER]
- ELF オブジェクトのヘッダの e_ident[EI_CLASS] フィールドでサポートされていない値を含んでします。
- [ ELF_E_HEADER]
- ELF オブジェクトのヘッダの e_ident[EI_DATA] フィールドでサポートされていない値を含んでします。
- [ ELF_E_RESOURCE]
- メモリ不足の状態が検出されました。
- [ ELF_E_SEQUENCE]
- 動作バージョンが elf_version(3) を使用して設定される前に、関数 elf_memory() が呼び出されました。
- [ ELF_E_VERSION]
- 引数 image は、サポートされないバージョンの ELF ファイルに対応しています。
June 28, 2006 | FreeBSD |