Add ELF program header.

llvm-svn: 165316
This commit is contained in:
Hemant Kulkarni 2012-10-05 15:16:53 +00:00
parent 99e42ee9a3
commit a4682fd467

View File

@ -412,6 +412,35 @@ struct Elf_Ehdr_Impl {
unsigned char getDataEncoding() const { return e_ident[ELF::EI_DATA]; } unsigned char getDataEncoding() const { return e_ident[ELF::EI_DATA]; }
}; };
template<support::endianness target_endianness, bool is64Bits>
struct Elf_Phdr;
template<support::endianness target_endianness>
struct Elf_Phdr<target_endianness, false> {
LLVM_ELF_IMPORT_TYPES(target_endianness, false)
Elf_Word p_type; // Type of segment
Elf_Off p_offset; // FileOffset where segment is located, in bytes
Elf_Addr p_vaddr; // Virtual Address of beginning of segment
Elf_Addr p_paddr; // Physical address of beginning of segment (OS-specific)
Elf_Word p_filesz; // Num. of bytes in file image of segment (may be zero)
Elf_Word p_memsz; // Num. of bytes in mem image of segment (may be zero)
Elf_Word p_flags; // Segment flags
Elf_Word p_align; // Segment alignment constraint
};
template<support::endianness target_endianness>
struct Elf_Phdr<target_endianness, true> {
LLVM_ELF_IMPORT_TYPES(target_endianness, true)
Elf_Word p_type; // Type of segment
Elf_Word p_flags; // Segment flags
Elf_Off p_offset; // FileOffset where segment is located, in bytes
Elf_Addr p_vaddr; // Virtual Address of beginning of segment
Elf_Addr p_paddr; // Physical address of beginning of segment (OS-specific)
Elf_Word p_filesz; // Num. of bytes in file image of segment (may be zero)
Elf_Word p_memsz; // Num. of bytes in mem image of segment (may be zero)
Elf_Word p_align; // Segment alignment constraint
};
template<support::endianness target_endianness, bool is64Bits> template<support::endianness target_endianness, bool is64Bits>
class ELFObjectFile : public ObjectFile { class ELFObjectFile : public ObjectFile {
LLVM_ELF_IMPORT_TYPES(target_endianness, is64Bits) LLVM_ELF_IMPORT_TYPES(target_endianness, is64Bits)