X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=elfcpp%2Fx86_64.h;h=d42fd266baf7f4f219500149a059bffc8b6d4df1;hb=a8f4f6b9bc2b1273cfa94fc1f21af7bcf13012d5;hp=741a05a135e563a3a0208651705a984420184d54;hpb=d5179552f619e8d0e18bda12c09c649fa9940562;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/x86_64.h b/elfcpp/x86_64.h index 741a05a135..d42fd266ba 100644 --- a/elfcpp/x86_64.h +++ b/elfcpp/x86_64.h @@ -1,12 +1,47 @@ // x86-64.h -- ELF definitions specific to EM_X86_64 -*- C++ -*- +// Copyright (C) 2006-2019 Free Software Foundation, Inc. +// Written by Andrew Chatham. + +// This file is part of elfcpp. + +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public License +// as published by the Free Software Foundation; either version 2, or +// (at your option) any later version. + +// In addition to the permissions in the GNU Library General Public +// License, the Free Software Foundation gives you unlimited +// permission to link the compiled version of this file into +// combinations with other programs, and to distribute those +// combinations without any restriction coming from the use of this +// file. (The Library Public License restrictions do apply in other +// respects; for example, they cover modification of the file, and +/// distribution when not linked into a combined executable.) + +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. + +// You should have received a copy of the GNU Library General Public +// License along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +// 02110-1301, USA. + #ifndef ELFCPP_X86_64_H #define ELFCPP_X86_64_H namespace elfcpp { -// Taken from http://www.x86-64.org/documentation/abi-0.98.pdf and elf.h +// Documentation is taken from +// http://www.x86-64.org/documentation/abi-0.98.pdf +// elf.h +// Documentation for the TLS relocs is taken from +// http://people.redhat.com/drepper/tls.pdf +// http://www.lsd.ic.unicamp.br/~oliva/writeups/TLS/RFC-TLSDESC-x86.txt + enum { R_X86_64_NONE = 0, // No reloc @@ -55,11 +90,25 @@ enum R_X86_64_GOTPC32_TLSDESC = 34, // 32-bit PC relative to TLS descriptor in GOT R_X86_64_TLSDESC_CALL = 35, // Relaxable call through TLS descriptor R_X86_64_TLSDESC = 36, // 2 by 64-bit TLS descriptor + R_X86_64_IRELATIVE = 37, // Adjust indirectly by program base + R_X86_64_RELATIVE64 = 38, // 64-bit adjust by program base + R_X86_64_PC32_BND = 39, // PC relative 32 bit signed with BND prefix + R_X86_64_PLT32_BND = 40, // 32 bit PLT address with BND prefix + R_X86_64_GOTPCRELX = 41, // 32 bit signed PC relative offset to GOT + // without REX prefix, relaxable. + R_X86_64_REX_GOTPCRELX = 42, // 32 bit signed PC relative offset to GOT + // with REX prefix, relaxable. // GNU vtable garbage collection extensions. - R_386_GNU_VTINHERIT = 250, - R_386_GNU_VTENTRY = 251 + R_X86_64_GNU_VTINHERIT = 250, + R_X86_64_GNU_VTENTRY = 251 }; +// The bit values that can appear in the GNU_PROPERTY_X86_FEATURE_1_AND +// program property. + +const uint64_t GNU_PROPERTY_X86_FEATURE_1_IBT = 1ULL << 0; +const uint64_t GNU_PROPERTY_X86_FEATURE_1_SHSTK = 1ULL << 1; + } // End namespace elfcpp. #endif // !defined(ELFCPP_X86_64_H)