X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=elfcpp%2Fx86_64.h;h=0f1dc9af6025e6a4d0e1f3c1f08ce0f6f4f04337;hb=ac8cb70f3690b4eace1325c7ff918dce9073da7c;hp=fe2d1d6ce0356ed7fe845372a761ed38887776de;hpb=6cb15b7f89d59fb61780b01ad3de2340f33c3728;p=deliverable%2Fbinutils-gdb.git diff --git a/elfcpp/x86_64.h b/elfcpp/x86_64.h index fe2d1d6ce0..0f1dc9af60 100644 --- a/elfcpp/x86_64.h +++ b/elfcpp/x86_64.h @@ -1,7 +1,7 @@ // x86-64.h -- ELF definitions specific to EM_X86_64 -*- C++ -*- -// Copyright 2006, 2007, Free Software Foundation, Inc. -// Written by Andrew Chatham . +// Copyright (C) 2006-2018 Free Software Foundation, Inc. +// Written by Andrew Chatham. // This file is part of elfcpp. @@ -35,7 +35,13 @@ 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 @@ -84,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)