forked from OSchip/llvm-project
Define endianness-aware type for Elf_Chdr.
llvm-svn: 274728
This commit is contained in:
parent
7f92eab5af
commit
830c078d8b
|
@ -34,6 +34,7 @@ template <class ELFT> struct Elf_Vernaux_Impl;
|
|||
template <class ELFT> struct Elf_Versym_Impl;
|
||||
template <class ELFT> struct Elf_Hash_Impl;
|
||||
template <class ELFT> struct Elf_GnuHash_Impl;
|
||||
template <class ELFT> struct Elf_Chdr_Impl;
|
||||
|
||||
template <endianness E, bool Is64> struct ELFType {
|
||||
private:
|
||||
|
@ -59,6 +60,7 @@ public:
|
|||
typedef Elf_Versym_Impl<ELFType<E, Is64>> Versym;
|
||||
typedef Elf_Hash_Impl<ELFType<E, Is64>> Hash;
|
||||
typedef Elf_GnuHash_Impl<ELFType<E, Is64>> GnuHash;
|
||||
typedef Elf_Chdr_Impl<ELFType<E, Is64>> Chdr;
|
||||
typedef ArrayRef<Dyn> DynRange;
|
||||
typedef ArrayRef<Shdr> ShdrRange;
|
||||
typedef ArrayRef<Sym> SymRange;
|
||||
|
@ -558,6 +560,24 @@ struct Elf_GnuHash_Impl {
|
|||
}
|
||||
};
|
||||
|
||||
// Compressed section headers.
|
||||
template <endianness TargetEndianness>
|
||||
struct Elf_Chdr_Impl<ELFType<TargetEndianness, false>> {
|
||||
LLVM_ELF_IMPORT_TYPES(TargetEndianness, false)
|
||||
Elf_Word ch_type;
|
||||
Elf_Word ch_size;
|
||||
Elf_Word ch_addralign;
|
||||
};
|
||||
|
||||
template <endianness TargetEndianness>
|
||||
struct Elf_Chdr_Impl<ELFType<TargetEndianness, true>> {
|
||||
LLVM_ELF_IMPORT_TYPES(TargetEndianness, true)
|
||||
Elf_Word ch_type;
|
||||
Elf_Word ch_reserved;
|
||||
Elf_Xword ch_size;
|
||||
Elf_Xword ch_addralign;
|
||||
};
|
||||
|
||||
// MIPS .reginfo section
|
||||
template <class ELFT>
|
||||
struct Elf_Mips_RegInfo;
|
||||
|
|
Loading…
Reference in New Issue