X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=elfcpp%2Felfcpp_internal.h;h=36a6d6205f711db68c419f897fe586d185c2f1cf;hb=41ab2f9b7b6173bf8ae2dc4d78c07ac17012c4c6;hp=d800f7a071316b058614d8867681718e673f40ac;hpb=b90efa5b79ac1524ec260f8eb89d1be37e0219a7;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/elfcpp_internal.h b/elfcpp/elfcpp_internal.h index d800f7a071..36a6d6205f 100644 --- a/elfcpp/elfcpp_internal.h +++ b/elfcpp/elfcpp_internal.h @@ -1,6 +1,6 @@ // elfcpp_internal.h -- internals for elfcpp -*- C++ -*- -// Copyright (C) 2006-2015 Free Software Foundation, Inc. +// Copyright (C) 2006-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of elfcpp. @@ -79,6 +79,28 @@ struct Shdr_data typename Elf_types::Elf_WXword sh_entsize; }; +// An ELF compression header. + +template +struct Chdr_data; + +template<> +struct Chdr_data<32> +{ + Elf_Word ch_type; + Elf_Word ch_size; + Elf_Word ch_addralign; +}; + +template<> +struct Chdr_data<64> +{ + Elf_Word ch_type; + Elf_Word ch_reserved; + Elf_Xword ch_size; + Elf_Xword ch_addralign; +}; + // An ELF segment header. We use template specialization for the // 32-bit and 64-bit versions because the fields are in a different // order. @@ -158,6 +180,29 @@ struct Rela_data typename Elf_types::Elf_Swxword r_addend; }; +// MIPS-64 has a non-standard layout for relocations. + +struct Mips64_rel_data +{ + Elf_types<64>::Elf_Addr r_offset; + Elf_Word r_sym; + unsigned char r_ssym; + unsigned char r_type3; + unsigned char r_type2; + unsigned char r_type; +}; + +struct Mips64_rela_data +{ + Elf_types<64>::Elf_Addr r_offset; + Elf_Word r_sym; + unsigned char r_ssym; + unsigned char r_type3; + unsigned char r_type2; + unsigned char r_type; + Elf_types<64>::Elf_Swxword r_addend; +}; + // An entry in the ELF SHT_DYNAMIC section aka PT_DYNAMIC segment. template