Add support for constructing pc-relative addresses to the plt, by
[deliverable/binutils-gdb.git] / include / elf / i386.h
CommitLineData
252b5132 1/* ix86 ELF support for BFD.
e4e42b45 2 Copyright 1998, 1999, 2000, 2002, 2004, 2005, 2006, 2009, 2010
67a4f2b7 3 Free Software Foundation, Inc.
252b5132
RH
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
252b5132
RH
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. */
252b5132
RH
20
21#ifndef _ELF_I386_H
22#define _ELF_I386_H
23
c7d85a8d 24#include "elf/reloc-macros.h"
252b5132
RH
25
26START_RELOC_NUMBERS (elf_i386_reloc_type)
27 RELOC_NUMBER (R_386_NONE, 0) /* No reloc */
28 RELOC_NUMBER (R_386_32, 1) /* Direct 32 bit */
29 RELOC_NUMBER (R_386_PC32, 2) /* PC relative 32 bit */
30 RELOC_NUMBER (R_386_GOT32, 3) /* 32 bit GOT entry */
31 RELOC_NUMBER (R_386_PLT32, 4) /* 32 bit PLT address */
32 RELOC_NUMBER (R_386_COPY, 5) /* Copy symbol at runtime */
33 RELOC_NUMBER (R_386_GLOB_DAT, 6) /* Create GOT entry */
34 RELOC_NUMBER (R_386_JUMP_SLOT, 7) /* Create PLT entry */
35 RELOC_NUMBER (R_386_RELATIVE, 8) /* Adjust by program base */
36 RELOC_NUMBER (R_386_GOTOFF, 9) /* 32 bit offset to GOT */
37 RELOC_NUMBER (R_386_GOTPC, 10) /* 32 bit PC relative offset to GOT */
13ae64f3
JJ
38 RELOC_NUMBER (R_386_32PLT, 11) /* Used by Sun */
39 FAKE_RELOC (FIRST_INVALID_RELOC, 12)
37e55690
JJ
40 FAKE_RELOC (LAST_INVALID_RELOC, 13)
41 RELOC_NUMBER (R_386_TLS_TPOFF,14)
42 RELOC_NUMBER (R_386_TLS_IE, 15)
43 RELOC_NUMBER (R_386_TLS_GOTIE,16)
13ae64f3
JJ
44 RELOC_NUMBER (R_386_TLS_LE, 17)
45 RELOC_NUMBER (R_386_TLS_GD, 18)
46 RELOC_NUMBER (R_386_TLS_LDM, 19)
252b5132
RH
47 RELOC_NUMBER (R_386_16, 20)
48 RELOC_NUMBER (R_386_PC16, 21)
49 RELOC_NUMBER (R_386_8, 22)
50 RELOC_NUMBER (R_386_PC8, 23)
13ae64f3
JJ
51 RELOC_NUMBER (R_386_TLS_GD_32, 24)
52 RELOC_NUMBER (R_386_TLS_GD_PUSH, 25)
53 RELOC_NUMBER (R_386_TLS_GD_CALL, 26)
54 RELOC_NUMBER (R_386_TLS_GD_POP, 27)
55 RELOC_NUMBER (R_386_TLS_LDM_32, 28)
56 RELOC_NUMBER (R_386_TLS_LDM_PUSH, 29)
57 RELOC_NUMBER (R_386_TLS_LDM_CALL, 30)
58 RELOC_NUMBER (R_386_TLS_LDM_POP, 31)
59 RELOC_NUMBER (R_386_TLS_LDO_32, 32)
60 RELOC_NUMBER (R_386_TLS_IE_32, 33)
61 RELOC_NUMBER (R_386_TLS_LE_32, 34)
62 RELOC_NUMBER (R_386_TLS_DTPMOD32, 35)
63 RELOC_NUMBER (R_386_TLS_DTPOFF32, 36)
64 RELOC_NUMBER (R_386_TLS_TPOFF32, 37)
67a4f2b7
AO
65/* 38 */
66 RELOC_NUMBER (R_386_TLS_GOTDESC, 39)
67 RELOC_NUMBER (R_386_TLS_DESC_CALL,40)
68 RELOC_NUMBER (R_386_TLS_DESC, 41)
cbe950e9 69 RELOC_NUMBER (R_386_IRELATIVE, 42) /* Adjust indirectly by program base */
13ae64f3 70
083febaa
L
71 /* Used by Intel. */
72 RELOC_NUMBER (R_386_USED_BY_INTEL_200, 200)
73
252b5132
RH
74 /* These are GNU extensions to enable C++ vtable garbage collection. */
75 RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
76 RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
1b452ec6 77END_RELOC_NUMBERS (R_386_max)
252b5132
RH
78
79#endif
This page took 0.54872 seconds and 4 git commands to generate.