]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - include/elf/x86-64.h
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / include / elf / x86-64.h
CommitLineData
abf1d184 1/* x86_64 ELF support for BFD.
250d07de 2 Copyright (C) 2000-2021 Free Software Foundation, Inc.
abf1d184
NC
3 Contributed by Jan Hubicka <jh@suse.cz>
4
5 This file is part of BFD, the Binary File Descriptor library.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
e4e42b45 9 the Free Software Foundation; either version 3 of the License, or
abf1d184
NC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
e172dbf8 19 Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
abf1d184
NC
20
21#ifndef _ELF_X86_64_H
22#define _ELF_X86_64_H
23
24#include "elf/reloc-macros.h"
25
26START_RELOC_NUMBERS (elf_x86_64_reloc_type)
27 RELOC_NUMBER (R_X86_64_NONE, 0) /* No reloc */
bffbf940 28 RELOC_NUMBER (R_X86_64_64, 1) /* Direct 64 bit */
abf1d184
NC
29 RELOC_NUMBER (R_X86_64_PC32, 2) /* PC relative 32 bit signed */
30 RELOC_NUMBER (R_X86_64_GOT32, 3) /* 32 bit GOT entry */
31 RELOC_NUMBER (R_X86_64_PLT32, 4) /* 32 bit PLT address */
32 RELOC_NUMBER (R_X86_64_COPY, 5) /* Copy symbol at runtime */
33 RELOC_NUMBER (R_X86_64_GLOB_DAT, 6) /* Create GOT entry */
bffbf940 34 RELOC_NUMBER (R_X86_64_JUMP_SLOT,7) /* Create PLT entry */
abf1d184
NC
35 RELOC_NUMBER (R_X86_64_RELATIVE, 8) /* Adjust by program base */
36 RELOC_NUMBER (R_X86_64_GOTPCREL, 9) /* 32 bit signed pc relative
d6ab8113 37 offset to GOT entry */
bffbf940
JJ
38 RELOC_NUMBER (R_X86_64_32, 10) /* Direct 32 bit zero extended */
39 RELOC_NUMBER (R_X86_64_32S, 11) /* Direct 32 bit sign extended */
40 RELOC_NUMBER (R_X86_64_16, 12) /* Direct 16 bit zero extended */
abf1d184 41 RELOC_NUMBER (R_X86_64_PC16, 13) /* 16 bit sign extended pc relative*/
bffbf940
JJ
42 RELOC_NUMBER (R_X86_64_8, 14) /* Direct 8 bit sign extended */
43 RELOC_NUMBER (R_X86_64_PC8, 15) /* 8 bit sign extended pc relative*/
44 RELOC_NUMBER (R_X86_64_DTPMOD64, 16) /* ID of module containing symbol */
45 RELOC_NUMBER (R_X86_64_DTPOFF64, 17) /* Offset in TLS block */
46 RELOC_NUMBER (R_X86_64_TPOFF64, 18) /* Offset in initial TLS block */
47 RELOC_NUMBER (R_X86_64_TLSGD, 19) /* PC relative offset to GD GOT block */
48 RELOC_NUMBER (R_X86_64_TLSLD, 20) /* PC relative offset to LD GOT block */
49 RELOC_NUMBER (R_X86_64_DTPOFF32, 21) /* Offset in TLS block */
50 RELOC_NUMBER (R_X86_64_GOTTPOFF, 22) /* PC relative offset to IE GOT entry */
51 RELOC_NUMBER (R_X86_64_TPOFF32, 23) /* Offset in initial TLS block */
d6ab8113
JB
52 RELOC_NUMBER (R_X86_64_PC64, 24) /* PC relative 64 bit */
53 RELOC_NUMBER (R_X86_64_GOTOFF64, 25) /* 64 bit offset to GOT */
54 RELOC_NUMBER (R_X86_64_GOTPC32, 26) /* 32 bit signed pc relative
55 offset to GOT */
7b81dfbb
AJ
56 RELOC_NUMBER (R_X86_64_GOT64, 27) /* 64 bit GOT entry offset */
57 RELOC_NUMBER (R_X86_64_GOTPCREL64, 28) /* 64 bit signed pc relative
58 offset to GOT entry */
59 RELOC_NUMBER (R_X86_64_GOTPC64, 29) /* 64 bit signed pc relative
60 offset to GOT */
0be36304 61 RELOC_NUMBER (R_X86_64_GOTPLT64, 30) /* Obsolete. The same as GOT64. */
7b81dfbb
AJ
62 RELOC_NUMBER (R_X86_64_PLTOFF64, 31) /* 64 bit GOT relative offset
63 to PLT entry */
e1ec603f
L
64 RELOC_NUMBER (R_X86_64_SIZE32, 32) /* 32-bit symbol size */
65 RELOC_NUMBER (R_X86_64_SIZE64, 33) /* 64-bit symbol size */
67a4f2b7
AO
66 RELOC_NUMBER (R_X86_64_GOTPC32_TLSDESC, 34)
67 /* 32 bit signed pc relative
68 offset to TLS descriptor
69 in the GOT. */
70 RELOC_NUMBER (R_X86_64_TLSDESC_CALL, 35) /* Relaxable call through TLS
71 descriptor. */
72 RELOC_NUMBER (R_X86_64_TLSDESC, 36) /* 2x64-bit TLS descriptor. */
cbe950e9 73 RELOC_NUMBER (R_X86_64_IRELATIVE, 37) /* Adjust indirectly by program base */
505b88fb 74 RELOC_NUMBER (R_X86_64_RELATIVE64, 38) /* 64bit adjust by program base */
56ceb5b5
L
75 RELOC_NUMBER (R_X86_64_PC32_BND, 39) /* PC relative 32 bit
76 signed with BND prefix */
77 RELOC_NUMBER (R_X86_64_PLT32_BND, 40) /* 32 bit PLT address with
78 BND prefix */
79 /* Load from 32 bit signed pc relative offset to GOT entry without
80 REX prefix, relaxable. */
81 RELOC_NUMBER (R_X86_64_GOTPCRELX, 41)
82 /* Load from 32 bit signed pc relative offset to GOT entry with
83 REX prefix, relaxable. */
84 RELOC_NUMBER (R_X86_64_REX_GOTPCRELX, 42)
fe4770f4
AJ
85 RELOC_NUMBER (R_X86_64_GNU_VTINHERIT, 250) /* GNU C++ hack */
86 RELOC_NUMBER (R_X86_64_GNU_VTENTRY, 251) /* GNU C++ hack */
abf1d184
NC
87END_RELOC_NUMBERS (R_X86_64_max)
88
d2b2c203
DJ
89/* Processor specific section types. */
90
91#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */
92
3b22753a
L
93/* Like SHN_COMMON but the symbol will be allocated in the .lbss
94 section. */
1bce5d2c 95#define SHN_X86_64_LCOMMON (SHN_LORESERVE + 2)
3b22753a
L
96
97#define SHF_X86_64_LARGE 0x10000000
abf1d184 98#endif