source: trunk/binutils/include/elf/alpha.h@ 3604

Last change on this file since 3604 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 4.5 KB
Line 
1/* ALPHA ELF support for BFD.
2 Copyright 1996, 1998, 2000 Free Software Foundation, Inc.
3
4 By Eric Youngdale, <eric@aib.com>. No processor supplement available
5 for this platform.
6
7This file is part of BFD, the Binary File Descriptor library.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2 of the License, or
12(at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
22
23/* This file holds definitions specific to the ALPHA ELF ABI. Note
24 that most of this is not actually implemented by BFD. */
25
26#ifndef _ELF_ALPHA_H
27#define _ELF_ALPHA_H
28
29/* Processor specific flags for the ELF header e_flags field. */
30
31/* All addresses must be below 2GB. */
32#define EF_ALPHA_32BIT 0x00000001
33
34/* All relocations needed for relaxation with code movement are present. */
35#define EF_ALPHA_CANRELAX 0x00000002
36
37/* Processor specific section flags. */
38
39/* This section must be in the global data area. */
40#define SHF_ALPHA_GPREL 0x10000000
41
42/* Section contains some sort of debugging information. The exact
43 format is unspecified. It's probably ECOFF symbols. */
44#define SHT_ALPHA_DEBUG 0x70000001
45
46/* Section contains register usage information. */
47#define SHT_ALPHA_REGINFO 0x70000002
48
49/* A section of type SHT_MIPS_REGINFO contains the following
50 structure. */
51typedef struct
52{
53 /* Mask of general purpose registers used. */
54 unsigned long ri_gprmask;
55 /* Mask of co-processor registers used. */
56 unsigned long ri_cprmask[4];
57 /* GP register value for this object file. */
58 long ri_gp_value;
59} Elf64_RegInfo;
60
61/* Special values for the st_other field in the symbol table. */
62
63#define STO_ALPHA_NOPV 0x80
64#define STO_ALPHA_STD_GPLOAD 0x88
65
66#include "elf/reloc-macros.h"
67
68/* Alpha relocs. */
69START_RELOC_NUMBERS (elf_alpha_reloc_type)
70 RELOC_NUMBER (R_ALPHA_NONE, 0) /* No reloc */
71 RELOC_NUMBER (R_ALPHA_REFLONG, 1) /* Direct 32 bit */
72 RELOC_NUMBER (R_ALPHA_REFQUAD, 2) /* Direct 64 bit */
73 RELOC_NUMBER (R_ALPHA_GPREL32, 3) /* GP relative 32 bit */
74 RELOC_NUMBER (R_ALPHA_LITERAL, 4) /* GP relative 16 bit w/optimization */
75 RELOC_NUMBER (R_ALPHA_LITUSE, 5) /* Optimization hint for LITERAL */
76 RELOC_NUMBER (R_ALPHA_GPDISP, 6) /* Add displacement to GP */
77 RELOC_NUMBER (R_ALPHA_BRADDR, 7) /* PC+4 relative 23 bit shifted */
78 RELOC_NUMBER (R_ALPHA_HINT, 8) /* PC+4 relative 16 bit shifted */
79 RELOC_NUMBER (R_ALPHA_SREL16, 9) /* PC relative 16 bit */
80 RELOC_NUMBER (R_ALPHA_SREL32, 10) /* PC relative 32 bit */
81 RELOC_NUMBER (R_ALPHA_SREL64, 11) /* PC relative 64 bit */
82
83 /* Skip 12 - 16; deprecated ECOFF relocs. */
84
85 RELOC_NUMBER (R_ALPHA_GPRELHIGH, 17) /* GP relative 32 bit, high 16 bits */
86 RELOC_NUMBER (R_ALPHA_GPRELLOW, 18) /* GP relative 32 bit, low 16 bits */
87 RELOC_NUMBER (R_ALPHA_GPREL16, 19) /* GP relative 16 bit */
88
89 /* Skip 20 - 23; deprecated ECOFF relocs. */
90
91 /* These relocations are specific to shared libraries. */
92 RELOC_NUMBER (R_ALPHA_COPY, 24) /* Copy symbol at runtime */
93 RELOC_NUMBER (R_ALPHA_GLOB_DAT, 25) /* Create GOT entry */
94 RELOC_NUMBER (R_ALPHA_JMP_SLOT, 26) /* Create PLT entry */
95 RELOC_NUMBER (R_ALPHA_RELATIVE, 27) /* Adjust by program base */
96
97 /* Like BRADDR, but assert that the source and target object file
98 share the same GP value, and adjust the target address for
99 STO_ALPHA_STD_GPLOAD. */
100 RELOC_NUMBER (R_ALPHA_BRSGP, 28)
101
102 /* Thread-Local Storage. */
103 RELOC_NUMBER (R_ALPHA_TLSGD, 29)
104 RELOC_NUMBER (R_ALPHA_TLSLDM, 30)
105 RELOC_NUMBER (R_ALPHA_DTPMOD64, 31)
106 RELOC_NUMBER (R_ALPHA_GOTDTPREL, 32)
107 RELOC_NUMBER (R_ALPHA_DTPREL64, 33)
108 RELOC_NUMBER (R_ALPHA_DTPRELHI, 34)
109 RELOC_NUMBER (R_ALPHA_DTPRELLO, 35)
110 RELOC_NUMBER (R_ALPHA_DTPREL16, 36)
111 RELOC_NUMBER (R_ALPHA_GOTTPREL, 37)
112 RELOC_NUMBER (R_ALPHA_TPREL64, 38)
113 RELOC_NUMBER (R_ALPHA_TPRELHI, 39)
114 RELOC_NUMBER (R_ALPHA_TPRELLO, 40)
115 RELOC_NUMBER (R_ALPHA_TPREL16, 41)
116
117END_RELOC_NUMBERS (R_ALPHA_max)
118
119#define LITUSE_ALPHA_ADDR 0
120#define LITUSE_ALPHA_BASE 1
121#define LITUSE_ALPHA_BYTOFF 2
122#define LITUSE_ALPHA_JSR 3
123#define LITUSE_ALPHA_TLSGD 4
124#define LITUSE_ALPHA_TLSLDM 5
125
126#endif /* _ELF_ALPHA_H */
Note: See TracBrowser for help on using the repository browser.