160484Sobrien/* ix86 ELF support for BFD.
2218822Sdim   Copyright 1998, 1999, 2000, 2002, 2004, 2005, 2006
3218822Sdim   Free Software Foundation, Inc.
460484Sobrien
560484Sobrien   This file is part of BFD, the Binary File Descriptor library.
660484Sobrien
760484Sobrien   This program is free software; you can redistribute it and/or modify
860484Sobrien   it under the terms of the GNU General Public License as published by
960484Sobrien   the Free Software Foundation; either version 2 of the License, or
1060484Sobrien   (at your option) any later version.
1160484Sobrien
1260484Sobrien   This program is distributed in the hope that it will be useful,
1360484Sobrien   but WITHOUT ANY WARRANTY; without even the implied warranty of
1460484Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1560484Sobrien   GNU General Public License for more details.
1660484Sobrien
1760484Sobrien   You should have received a copy of the GNU General Public License
1860484Sobrien   along with this program; if not, write to the Free Software Foundation,
19218822Sdim   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
2060484Sobrien
2160484Sobrien#ifndef _ELF_I386_H
2260484Sobrien#define _ELF_I386_H
2360484Sobrien
2460484Sobrien#include "elf/reloc-macros.h"
2560484Sobrien
2660484SobrienSTART_RELOC_NUMBERS (elf_i386_reloc_type)
2760484Sobrien     RELOC_NUMBER (R_386_NONE,      0)	/* No reloc */
2860484Sobrien     RELOC_NUMBER (R_386_32,        1)	/* Direct 32 bit  */
2960484Sobrien     RELOC_NUMBER (R_386_PC32,      2)	/* PC relative 32 bit */
3060484Sobrien     RELOC_NUMBER (R_386_GOT32,     3)	/* 32 bit GOT entry */
3160484Sobrien     RELOC_NUMBER (R_386_PLT32,	    4)	/* 32 bit PLT address */
3260484Sobrien     RELOC_NUMBER (R_386_COPY,	    5)	/* Copy symbol at runtime */
3360484Sobrien     RELOC_NUMBER (R_386_GLOB_DAT,  6)	/* Create GOT entry */
3460484Sobrien     RELOC_NUMBER (R_386_JUMP_SLOT, 7)	/* Create PLT entry */
3560484Sobrien     RELOC_NUMBER (R_386_RELATIVE,  8)	/* Adjust by program base */
3660484Sobrien     RELOC_NUMBER (R_386_GOTOFF,    9)	/* 32 bit offset to GOT */
3760484Sobrien     RELOC_NUMBER (R_386_GOTPC,    10)	/* 32 bit PC relative offset to GOT */
38104834Sobrien     RELOC_NUMBER (R_386_32PLT,    11)	/* Used by Sun */
39104834Sobrien     FAKE_RELOC   (FIRST_INVALID_RELOC, 12)
40104834Sobrien     FAKE_RELOC   (LAST_INVALID_RELOC,  13)
41104834Sobrien     RELOC_NUMBER (R_386_TLS_TPOFF,14)
42104834Sobrien     RELOC_NUMBER (R_386_TLS_IE,   15)
43104834Sobrien     RELOC_NUMBER (R_386_TLS_GOTIE,16)
44104834Sobrien     RELOC_NUMBER (R_386_TLS_LE,   17)
45104834Sobrien     RELOC_NUMBER (R_386_TLS_GD,   18)
46104834Sobrien     RELOC_NUMBER (R_386_TLS_LDM,  19)
4760484Sobrien     RELOC_NUMBER (R_386_16,       20)
4860484Sobrien     RELOC_NUMBER (R_386_PC16,     21)
4960484Sobrien     RELOC_NUMBER (R_386_8,	   22)
5060484Sobrien     RELOC_NUMBER (R_386_PC8,      23)
51104834Sobrien     RELOC_NUMBER (R_386_TLS_GD_32,    24)
52104834Sobrien     RELOC_NUMBER (R_386_TLS_GD_PUSH,  25)
53104834Sobrien     RELOC_NUMBER (R_386_TLS_GD_CALL,  26)
54104834Sobrien     RELOC_NUMBER (R_386_TLS_GD_POP,   27)
55104834Sobrien     RELOC_NUMBER (R_386_TLS_LDM_32,   28)
56104834Sobrien     RELOC_NUMBER (R_386_TLS_LDM_PUSH, 29)
57104834Sobrien     RELOC_NUMBER (R_386_TLS_LDM_CALL, 30)
58104834Sobrien     RELOC_NUMBER (R_386_TLS_LDM_POP,  31)
59104834Sobrien     RELOC_NUMBER (R_386_TLS_LDO_32,   32)
60104834Sobrien     RELOC_NUMBER (R_386_TLS_IE_32,    33)
61104834Sobrien     RELOC_NUMBER (R_386_TLS_LE_32,    34)
62104834Sobrien     RELOC_NUMBER (R_386_TLS_DTPMOD32, 35)
63104834Sobrien     RELOC_NUMBER (R_386_TLS_DTPOFF32, 36)
64104834Sobrien     RELOC_NUMBER (R_386_TLS_TPOFF32,  37)
65218822Sdim/* 38 */
66218822Sdim     RELOC_NUMBER (R_386_TLS_GOTDESC,  39)
67218822Sdim     RELOC_NUMBER (R_386_TLS_DESC_CALL,40)
68218822Sdim     RELOC_NUMBER (R_386_TLS_DESC,     41)
69104834Sobrien
70218822Sdim     /* Used by Intel.  */
71218822Sdim     RELOC_NUMBER (R_386_USED_BY_INTEL_200, 200)
72218822Sdim
7360484Sobrien     /* These are GNU extensions to enable C++ vtable garbage collection.  */
7460484Sobrien     RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
7560484Sobrien     RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
7677298SobrienEND_RELOC_NUMBERS (R_386_max)
7760484Sobrien
7860484Sobrien#endif
79