X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=elfcpp%2Felfcpp_internal.h;h=36a6d6205f711db68c419f897fe586d185c2f1cf;hb=bf9ae9d8c37a4e1dfd192f266c20ea5786fd1bbd;hp=424a1f6f713f173aaaf8e7b911b17d1cd2c46cad;hpb=febdfe65a81629bc2a764820c94f9d2912a90e38;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/elfcpp_internal.h b/elfcpp/elfcpp_internal.h index 424a1f6f71..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. @@ -82,11 +82,23 @@ struct Shdr_data // An ELF compression header. template -struct Chdr_data +struct Chdr_data; + +template<> +struct Chdr_data<32> { - typename Elf_types::Elf_WXword ch_type; - typename Elf_types::Elf_WXword ch_size; - typename Elf_types::Elf_WXword ch_addralign; + 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 @@ -168,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