[llvm] r274728 - Define endianness-aware type for Elf_Chdr.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 6 20:53:01 PDT 2016


Author: ruiu
Date: Wed Jul  6 22:53:00 2016
New Revision: 274728

URL: http://llvm.org/viewvc/llvm-project?rev=274728&view=rev
Log:
Define endianness-aware type for Elf_Chdr.

Modified:
    llvm/trunk/include/llvm/Object/ELFTypes.h

Modified: llvm/trunk/include/llvm/Object/ELFTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ELFTypes.h?rev=274728&r1=274727&r2=274728&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ELFTypes.h (original)
+++ llvm/trunk/include/llvm/Object/ELFTypes.h Wed Jul  6 22:53:00 2016
@@ -34,6 +34,7 @@ template <class ELFT> struct Elf_Vernaux
 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;




More information about the llvm-commits mailing list