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