英語版
このページの英語版を見る

core.internal.elf.io

ELF ファイルにメモリマップド I/O を提供する。

リファレンス https://www.dwarfstd.org/

Authors:
Yazan Dabain, Martin Kinkelin
template ElfIO(Elf_Ehdr, Elf_Shdr, ubyte ELFCLASS)
ファイルベースのメモリマップドI/O(読み取り専用)。 ターゲット・プラットフォームとバイトオーダーが一致するELFファイルのみをサポートする。
Parameters:
Elf_Ehdr ELFヘッダーに期待される型 (Elf{32,64}Ehdr)
Elf_Shdr 期待されるELFセクションヘッダの型(Elf{32,64}Shdr)
ELFCLASS 期待されるELFクラス(ELFCLASS{32,64})
struct ElfFile;
ELFファイル(メモリマップされたELFヘッダを持つ)。
static bool open(const(char)* path, out ElfFile file);
指定されたファイルをElfIOのテンプレートパラメータにマッチするELFファイルとして開こうとする テンプレート・パラメータにマッチするELFファイルとしてオープンしようとする。
Returns:
成功すれば真。
this(int fd);
指定されたファイルディスクリプタに基づいてインスタンスを構築する。 ファイル・ヘッダーは検証しない。 インスタンスの破棄時にファイルはクローズされる。
TypedMMapRegion!Elf_Ehdr ehdr;
メモリマップされたELFヘッダ。
const bool isValid();
ELFファイルヘッダがElfIOテンプレートパラメータにマッチする場合、trueを返す。
const NamedSections namedSections();
指定されたセクションを繰り返し処理するための構造体を返す。
Examples:
foreach (index, name, sectionHeader; elfFile.namedSections) ...
const bool findSectionHeaderByName(const(char)[] sectionName, out ElfSectionHeader header);
指定された名前のセクションのヘッダーを見つけようとする。
Returns:
成功すると真。
struct NamedSections;
ELFファイルの(名前付き)セクションの反復処理を有効にする。
alias Callback = int delegate(size_t index, const(char)[] name, ElfSectionHeader sectionHeader);
name: ヌル文字で終端する。
int opApply(scope Callback dg);
struct ElfSectionHeader;
メモリ・マップされたELFセクション・ヘッダ。
this(const ref ElfFile file, size_t index);
指定されたファイルとセクション・インデックスに基づいて新しいインスタンスを構築する。
TypedMMapRegion!Elf_Shdr shdr;
メモリ・マップド・セクション・ヘッダー。
struct ElfSection;
メモリ・マップドELFセクション・データ。
this(const ref ElfFile file, const ref ElfSectionHeader shdr);
指定されたファイルとセクション・ヘッダに基づいて新しいインスタンスを構築する。
const const(void)[] data();
メモリ・マップド・セクション・データを返す。 データは、このElfSectionが生きている限りアクセス可能である。
enum int ELFCLASS32;
32ビットELFファイル用のELFクラス。
enum int ELFCLASS64;
64ビットELFファイル用のELFクラス。
alias Elf_Ehdr = core.sys.elf.Elf64_Ehdr;
ネイティブELFヘッダー型。
alias Elf_Shdr = core.sys.elf.Elf64_Shdr;
ネイティブELFセクションヘッダ型。
alias ELFCLASS = ELFCLASS64;
ネイティブELFクラス。
alias NativeElfIO = ElfIO!(Elf64_Ehdr, Elf64_Shdr, cast(ubyte)2u);
alias ElfFile = ElfIO!(Elf64_Ehdr, Elf64_Shdr, cast(ubyte)2u).ElfFile;
ネイティブ ELF ファイル。
alias ElfSectionHeader = ElfIO!(Elf64_Ehdr, Elf64_Shdr, cast(ubyte)2u).ElfSectionHeader;
ネイティブ ELF セクション・ヘッダー。
alias ElfSection = ElfIO!(Elf64_Ehdr, Elf64_Shdr, cast(ubyte)2u).ElfSection;
ネイティブELFセクション
nothrow @nogc char* thisExePath();
プロセスの実行ファイルへのパスを、新しく確保したC文字列として返す。 (完了したらfree())、エラーの場合はnullを返す。