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

名称

elf_randアーカイブメンバへの直接アクセスを提供する

ライブラリ

ELF Access Library (libelf, -lelf)

書式

#include < libelf.h>

off_t
elf_rand( Elf *archive, off_t offset);

解説

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