ELF_FLAGDATA(3) | FreeBSD Library Functions Manual | ELF_FLAGDATA(3) |
名称
elf_flagdata, elf_flagehdr, elf_flagelf, elf_flagphdr, elf_flagscn, elf_flagshdr — ELF(3) データ構造体に関連しているフラグを操作するライブラリ
ELF Access Library (libelf, -lelf)書式
#include < libelf.h> unsigned int
elf_flagdata( Elf_Data *data, Elf_Cmd cmd, unsigned int flags);
unsigned int
elf_flagehdr( Elf *elf, Elf_Cmd cmd, unsigned int flags);
unsigned int
elf_flagelf( Elf *elf, Elf_Cmd cmd, unsigned int flags);
unsigned int
elf_flagphdr( Elf *elf, Elf_Cmd cmd, unsigned int flags);
unsigned int
elf_flagscn( Elf_Scn *scn, Elf_Cmd cmd, unsigned int flags);
unsigned int
elf_flagshdr( Elf_Scn *scn, Elf_Cmd cmd, unsigned int flags);
解説
これらの関数は、ELF ファイルに関連しているデータ構造体のフラグを問い合わせるか、設定するか、またはリセットするために使用されます。引数 data, elf と scn は、フラグが変更される必要があるデータ構造を示します。これらの値は、アプリケーションコードのエラー処理を簡素化するために NULL にすることができます。
引数 cmd には、次の値があります:
- ELF_C_CLR
- 引数 flags は、クリアされるフラグを指定します。
- ELF_C_SET
- 引数 flags は、設定されるフラグを指定します。
引数 flags で、次のフラグを設定することができます:
- ELF_F_DIRTY
- 基本的なファイルに書き戻す必要であるのと関連データが構造体をマークします。その後の elf_update(3) の呼び出しは、ライブラリの内部のデータ構造を再同期させます。
- ELF_F_LAYOUT
- このフラグは、 elf_flagelf() API によってのみ有効にされます。それは、アプリケーションがファイルのレイアウトの責任をとり、ライブラリがセクションの間に任意の詰め物を挿入しないことをライブラリに通知します。
与えられたデータ構造を含まれた要素のすべてに影響する“dirty” (汚い) とマークします。したがって、 elf_flagelf( elf, ELF_C_SET, ELF_F_DIRTY) で ELF 記述子 elf をマークすることは、記述子の全体の内容が“dirty” (汚い) ことを意味します。
引数 flags に 0 の値を使用することは、問い合わせるデータ構造のためのフラグの現在の設定を返します。
戻り値
これらの関数は、成功すれば、更新されたフラグを返し、エラーが検出さるなら、0 を返します。エラー
これらの関数は、つぎのエラーで失敗するかもしれません:- [ ELF_E_ARGUMENT]
- サポートされていない値が cmd 引数で使用されました。
- [ ELF_E_ARGUMENT]
- 引数 flags が、サポートされていないフラグを設定しました。
- [ ELF_E_ARGUMENT]
- 引数 elf は、ELF オブジェクトの記述子ではありませんでした。
- [ ELF_E_SEQUENCE]
- 関数 elf_flagehdr() は、割り付けられた実行形式のヘッダなしで呼び出されました。
- [ ELF_E_SEQUENCE]
- 関数 elf_flagphdr() は、割り付けられたプログラムヘッダなしで呼び出されました。
関連項目
elf(3), elf32_newehdr(3), elf32_newphdr(3), elf32_newshdr(3), elf64_newehdr(3), elf64_newphdr(3), elf64_newshdr(3), elf_newdata(3), elf_update(3), gelf(3), gelf_newehdr(3), gelf_newphdr(3), gelf_newshdr(3), gelf_update_dyn(3), gelf_update_move(3), gelf_update_rel(3), gelf_update_rela(3), gelf_update_sym(3), gelf_update_syminfo(3)October 22, 2007 | FreeBSD |