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

名称

elf_memoryメモリにマップされた ELF または ar(1) アーカイブを処理

ライブラリ

ELF Access Library (libelf, -lelf)

書式

#include < libelf.h>

Elf *
elf_memory( char *image, size_t size);

解説

関数 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