X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=elfcpp%2Felfcpp.h;h=9c7c6294e424e032e9a449f101ae17b194fa0f4c;hb=087e161b3cd9a8626dc05ce1bdb8dfaf353a71b1;hp=bee73df6f6b3f4e200f87810321258ca5cd7b18b;hpb=4244d58a4080d057bb9b17554734192821493cb6;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/elfcpp.h b/elfcpp/elfcpp.h index bee73df6f6..9c7c6294e4 100644 --- a/elfcpp/elfcpp.h +++ b/elfcpp/elfcpp.h @@ -1,6 +1,6 @@ // elfcpp.h -- main header file for elfcpp -*- C++ -*- -// Copyright (C) 2006-2016 Free Software Foundation, Inc. +// Copyright (C) 2006-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of elfcpp. @@ -515,7 +515,9 @@ enum PT // Platform architecture compatibility information PT_AARCH64_ARCHEXT = 0x70000000, // Exception unwind tables - PT_AARCH64_UNWIND = 0x70000001 + PT_AARCH64_UNWIND = 0x70000001, + // 4k page table size + PT_S390_PGSTE = 0x70000000, }; // The valid bit flags found in the Phdr p_flags field. @@ -766,6 +768,9 @@ enum DT // Specify the value of _GLOBAL_OFFSET_TABLE_. DT_PPC_GOT = 0x70000000, + // Specify whether various optimisations are possible. + DT_PPC_OPT = 0x70000001, + // Specify the start of the .glink section. DT_PPC64_GLINK = 0x70000000, @@ -773,6 +778,9 @@ enum DT DT_PPC64_OPD = 0x70000001, DT_PPC64_OPDSZ = 0x70000002, + // Specify whether various optimisations are possible. + DT_PPC64_OPT = 0x70000003, + // The index of an STT_SPARC_REGISTER symbol within the DT_SYMTAB // symbol table. One dynamic entry exists for every STT_SPARC_REGISTER // symbol in the symbol table. @@ -905,7 +913,8 @@ enum DF_1 DF_1_INTERPOSE = 0x400, DF_1_NODEFLIB = 0x800, DF_1_NODUMP = 0x1000, - DF_1_CONLFAT = 0x2000 + DF_1_CONLFAT = 0x2000, + DF_1_PIE = 0x08000000 }; // Version numbers which appear in the vd_version field of a Verdef @@ -976,7 +985,9 @@ enum NT_GNU_BUILD_ID = 3, // The version of gold used to link. Th descriptor is just a // string. - NT_GNU_GOLD_VERSION = 4 + NT_GNU_GOLD_VERSION = 4, + // Program property note, as described in "Linux Extensions to the gABI". + NT_GNU_PROPERTY_TYPE_0 = 5 }; // The OS values which may appear in word 0 of a NT_GNU_ABI_TAG note. @@ -991,6 +1002,21 @@ enum ELF_NOTE_OS_SYLLABLE = 5 }; +// Program property types for NT_GNU_PROPERTY_TYPE_0. + +enum +{ + GNU_PROPERTY_STACK_SIZE = 1, + GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2, + GNU_PROPERTY_LOPROC = 0xc0000000, + GNU_PROPERTY_X86_ISA_1_USED = 0xc0000000, + GNU_PROPERTY_X86_ISA_1_NEEDED = 0xc0000001, + GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002, + GNU_PROPERTY_HIPROC = 0xdfffffff, + GNU_PROPERTY_LOUSER = 0xe0000000, + GNU_PROPERTY_HIUSER = 0xffffffff +}; + } // End namespace elfcpp. // Include internal details after defining the types. @@ -1346,10 +1372,27 @@ class Chdr_write put_ch_addralign(typename Elf_types::Elf_WXword v) { this->p_->ch_addralign = Convert::convert_host(v); } + void + put_ch_reserved(Elf_Word); + private: internal::Chdr_data* p_; }; +template<> +inline void +elfcpp::Chdr_write<64, true>::put_ch_reserved(Elf_Word v) +{ + this->p_->ch_reserved = v; +} + +template<> +inline void +elfcpp::Chdr_write<64, false>::put_ch_reserved(Elf_Word v) +{ + this->p_->ch_reserved = v; +} + // Accessor class for an ELF segment header. template