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

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 7 13:17:50 PDT 2016


Do you have a link to the spec that defines this? A quick googling doesn't
find anything.

-- Sean Silva

On Wed, Jul 6, 2016 at 8:53 PM, Rui Ueyama via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> 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;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160707/b978619f/attachment.html>


More information about the llvm-commits mailing list