1 |
/* IA-64 ELF support for BFD. |
/* IA-64 ELF support for BFD. |
2 |
Copyright 1998, 1999, 2000 Free Software Foundation, Inc. |
Copyright 1998, 1999, 2000, 2001, 2002, 2003 |
3 |
|
Free Software Foundation, Inc. |
4 |
Contributed by David Mosberger-Tang <davidm@hpl.hp.com> |
Contributed by David Mosberger-Tang <davidm@hpl.hp.com> |
5 |
|
|
6 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
|
|
|
|
This program is free software; you can redistribute it and/or modify |
|
|
it under the terms of the GNU General Public License as published by |
|
|
the Free Software Foundation; either version 2 of the License, or |
|
|
(at your option) any later version. |
|
|
|
|
|
This program is distributed in the hope that it will be useful, |
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
GNU General Public License for more details. |
|
|
|
|
|
You should have received a copy of the GNU General Public License |
|
|
along with this program; if not, write to the Free Software |
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
|
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 |
10 |
|
the Free Software Foundation; either version 2 of the License, or |
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 |
20 |
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
21 |
|
|
22 |
#ifndef _ELF_IA64_H |
#ifndef _ELF_IA64_H |
23 |
#define _ELF_IA64_H |
#define _ELF_IA64_H |
24 |
|
|
25 |
/* Bits in the e_flags field of the Elf64_Ehdr: */ |
/* Bits in the e_flags field of the Elf64_Ehdr: */ |
26 |
|
|
27 |
#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */ |
#define EF_IA_64_MASKOS 0x0000000f /* OS-specific flags. */ |
28 |
#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */ |
#define EF_IA_64_ARCH 0xff000000 /* Arch. version mask. */ |
29 |
|
|
30 |
/* ??? These four definitions are not part of the SVR4 ABI. |
/* ??? These four definitions are not part of the SVR4 ABI. |
31 |
They were present in David's initial code drop, so it is probable |
They were present in David's initial code drop, so it is probable |
32 |
that they are used by HP/UX. */ |
that they are used by HP/UX. */ |
33 |
#define EF_IA_64_TRAPNIL (1 << 0) /* trap NIL pointer dereferences */ |
#define EF_IA_64_TRAPNIL (1 << 0) /* Trap NIL pointer dereferences. */ |
34 |
#define EF_IA_64_EXT (1 << 2) /* program uses arch. extensions */ |
#define EF_IA_64_EXT (1 << 2) /* Program uses arch. extensions. */ |
35 |
#define EF_IA_64_BE (1 << 3) /* PSR BE bit set (big-endian) */ |
#define EF_IA_64_BE (1 << 3) /* PSR BE bit set (big-endian). */ |
36 |
#define EFA_IA_64_EAS2_3 0x23000000 /* ia64 EAS 2.3 */ |
#define EFA_IA_64_EAS2_3 0x23000000 /* IA64 EAS 2.3. */ |
37 |
|
|
38 |
#define EF_IA_64_ABI64 (1 << 4) /* 64-bit ABI */ |
#define EF_IA_64_ABI64 (1 << 4) /* 64-bit ABI. */ |
39 |
/* Not used yet. */ |
/* Not used yet. */ |
40 |
#define EF_IA_64_REDUCEDFP (1 << 5) /* Only FP6-FP11 used. */ |
#define EF_IA_64_REDUCEDFP (1 << 5) /* Only FP6-FP11 used. */ |
41 |
#define EF_IA_64_CONS_GP (1 << 6) /* gp as program wide constant. */ |
#define EF_IA_64_CONS_GP (1 << 6) /* gp as program wide constant. */ |
42 |
#define EF_IA_64_NOFUNCDESC_CONS_GP (1 << 7) /* And no function descriptors. */ |
#define EF_IA_64_NOFUNCDESC_CONS_GP (1 << 7) /* And no function descriptors. */ |
43 |
/* Not used yet. */ |
/* Not used yet. */ |
44 |
#define EF_IA_64_ABSOLUTE (1 << 8) /* Load at absolute addresses. */ |
#define EF_IA_64_ABSOLUTE (1 << 8) /* Load at absolute addresses. */ |
45 |
|
|
54 |
|
|
55 |
/* Bits in the sh_flags field of Elf64_Shdr: */ |
/* Bits in the sh_flags field of Elf64_Shdr: */ |
56 |
|
|
57 |
#define SHF_IA_64_SHORT 0x10000000 /* section near gp */ |
#define SHF_IA_64_SHORT 0x10000000 /* Section near gp. */ |
58 |
#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */ |
#define SHF_IA_64_NORECOV 0x20000000 /* Spec insns w/o recovery. */ |
59 |
|
|
60 |
/* Possible values for sh_type in Elf64_Shdr: */ |
/* Possible values for sh_type in Elf64_Shdr: */ |
61 |
|
|
62 |
#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */ |
#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* Extension bits. */ |
63 |
#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */ |
#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* Unwind bits. */ |
64 |
|
#define SHT_IA_64_LOPSREG (SHT_LOPROC + 0x8000000) |
65 |
|
/* ABI says (SHT_LOPROC + 0xfffffff) but I think it's a typo -- this makes sense. */ |
66 |
|
#define SHT_IA_64_HIPSREG (SHT_LOPROC + 0x8ffffff) |
67 |
|
#define SHT_IA_64_PRIORITY_INIT (SHT_LOPROC + 0x9000000) |
68 |
|
|
69 |
/* SHT_IA_64_HP_OPT_ANOT is only generated by HPUX compilers for its |
/* SHT_IA_64_HP_OPT_ANOT is only generated by HPUX compilers for its |
70 |
optimization annotation section. GCC does not generate it but we |
optimization annotation section. GCC does not generate it but we |
78 |
|
|
79 |
/* Possible values for p_type in Elf64_Phdr: */ |
/* Possible values for p_type in Elf64_Phdr: */ |
80 |
|
|
81 |
#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */ |
#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* Arch extension bits, */ |
82 |
#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */ |
#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* IA64 unwind bits. */ |
83 |
|
|
84 |
/* HP-UX specific values for p_type in Elf64_Phdr. |
/* HP-UX specific values for p_type in Elf64_Phdr. |
85 |
These values are currently just used to make |
These values are currently just used to make |
96 |
/* This section only used by HP-UX, The HP linker gives weak symbols |
/* This section only used by HP-UX, The HP linker gives weak symbols |
97 |
precedence over regular common symbols. We want common to override |
precedence over regular common symbols. We want common to override |
98 |
weak. Using this common instead of SHN_COMMON does that. */ |
weak. Using this common instead of SHN_COMMON does that. */ |
|
|
|
99 |
#define SHN_IA_64_ANSI_COMMON 0xFF00 |
#define SHN_IA_64_ANSI_COMMON 0xFF00 |
100 |
|
|
101 |
/* ia64-specific relocation types: */ |
/* IA64-specific relocation types: */ |
102 |
|
|
103 |
/* Relocs apply to specific instructions within a bundle. The least |
/* Relocs apply to specific instructions within a bundle. The least |
104 |
significant 2 bits of the address indicate which instruction in the |
significant 2 bits of the address indicate which instruction in the |