ELF_RAND(3) | FreeBSD Library Functions Manual | ELF_RAND(3) |
名称
elf_rand — アーカイブメンバへの直接アクセスを提供するライブラリ
ELF Access Library (libelf, -lelf)解説
elf_rand() 関数によって、 ELF 記述子 archive は、アーカイブのバイトオフセット elf_begin(3) への次の呼び出しが offset でアーカイブメンバへのアクセスを提供することができるように、調整されます。引数 offset は、アーカイブの始まりから必要なメンバのためのアーカイブヘッダの始まりまでバイトオフセットです。アーカイブメンバのオフセットは、 elf_getarsym(3) 関数を使用して検索することができます。
戻り値
関数 elf_rand() は、成功するなら、 offset を、エラーの場合には 0 を返します。使用例
使用されているアーカイブのすべてのメンバを処理するためには:
off_t off; Elf *archive, *e; ... cmd = ELF_C_READ; archive = elf_begin(fd, cmd, NULL); while ((e = elf_begin(fd, cmd, archive)) != (Elf *) 0) { ... process `e' here ... elf_end(e); off = ...new value...; if (elf_rand(archive, off) != off) { ... process error ... } } elf_end(archive);
アーカイブをリワインド (巻き戻す) するためには、次を使用します:
Elf *archive; ... if (elf_rand(archive, SARMAG) != SARMAG) { ... error ... }
エラー
関数 elf_rand() は、次のエラーで失敗します:- [ ELF_E_ARGUMENT]
- 引数 archive が NULL でした。
- [ ELF_E_ARGUMENT]
- 引数 archive は、 ar(1) アーカイブのための記述子ではありませんでした。
- [ ELF_E_ARCHIVE]
- 引数 offset は、アーカイブメンバのヘッダの始まりと対応しませんでした。
June 17, 2006 | FreeBSD |