i386.h revision 259065
168673Sobrien/* ix86 ELF support for BFD.
278828Sobrien   Copyright 1998, 1999, 2000, 2002, 2004, 2005, 2006
368673Sobrien   Free Software Foundation, Inc.
468673Sobrien
568673Sobrien   This file is part of BFD, the Binary File Descriptor library.
668673Sobrien
768673Sobrien   This program is free software; you can redistribute it and/or modify
868673Sobrien   it under the terms of the GNU General Public License as published by
968673Sobrien   the Free Software Foundation; either version 2 of the License, or
1068673Sobrien   (at your option) any later version.
1168673Sobrien
1268673Sobrien   This program is distributed in the hope that it will be useful,
1368673Sobrien   but WITHOUT ANY WARRANTY; without even the implied warranty of
1468673Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1568673Sobrien   GNU General Public License for more details.
1668673Sobrien
1768673Sobrien   You should have received a copy of the GNU General Public License
1868673Sobrien   along with this program; if not, write to the Free Software Foundation,
1968673Sobrien   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
2068673Sobrien
2168673Sobrien#ifndef _ELF_I386_H
2268673Sobrien#define _ELF_I386_H
2368673Sobrien
2468673Sobrien#include "elf/reloc-macros.h"
2568673Sobrien
2668673SobrienSTART_RELOC_NUMBERS (elf_i386_reloc_type)
2768673Sobrien     RELOC_NUMBER (R_386_NONE,      0)	/* No reloc */
2868673Sobrien     RELOC_NUMBER (R_386_32,        1)	/* Direct 32 bit  */
2968673Sobrien     RELOC_NUMBER (R_386_PC32,      2)	/* PC relative 32 bit */
3068673Sobrien     RELOC_NUMBER (R_386_GOT32,     3)	/* 32 bit GOT entry */
3168673Sobrien     RELOC_NUMBER (R_386_PLT32,	    4)	/* 32 bit PLT address */
3268673Sobrien     RELOC_NUMBER (R_386_COPY,	    5)	/* Copy symbol at runtime */
3368673Sobrien     RELOC_NUMBER (R_386_GLOB_DAT,  6)	/* Create GOT entry */
3468673Sobrien     RELOC_NUMBER (R_386_JUMP_SLOT, 7)	/* Create PLT entry */
3568673Sobrien     RELOC_NUMBER (R_386_RELATIVE,  8)	/* Adjust by program base */
3668673Sobrien     RELOC_NUMBER (R_386_GOTOFF,    9)	/* 32 bit offset to GOT */
3768673Sobrien     RELOC_NUMBER (R_386_GOTPC,    10)	/* 32 bit PC relative offset to GOT */
3868673Sobrien     RELOC_NUMBER (R_386_32PLT,    11)	/* Used by Sun */
3968673Sobrien     FAKE_RELOC   (FIRST_INVALID_RELOC, 12)
4077298Sobrien     FAKE_RELOC   (LAST_INVALID_RELOC,  13)
4168673Sobrien     RELOC_NUMBER (R_386_TLS_TPOFF,14)
4268673Sobrien     RELOC_NUMBER (R_386_TLS_IE,   15)
43     RELOC_NUMBER (R_386_TLS_GOTIE,16)
44     RELOC_NUMBER (R_386_TLS_LE,   17)
45     RELOC_NUMBER (R_386_TLS_GD,   18)
46     RELOC_NUMBER (R_386_TLS_LDM,  19)
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)
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)
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)
69
70     /* Used by Intel.  */
71     RELOC_NUMBER (R_386_USED_BY_INTEL_200, 200)
72
73     /* These are GNU extensions to enable C++ vtable garbage collection.  */
74     RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
75     RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
76END_RELOC_NUMBERS (R_386_max)
77
78#endif
79