emulparams/m32relf.sh: Back out INPUT_FILES change. libgcc1-test fails.
[deliverable/binutils-gdb.git] / bfd / elf32-hppa.h
CommitLineData
f5bfdacd 1/* ELF32/HPPA support
7050286d 2
f5bfdacd
JL
3 This file contains ELF32/HPPA relocation support as specified
4 in the Stratus FTX/Golf Object File Format (SED-1762) dated
5 November 19, 1992.
7050286d 6
459ae909 7 Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
7050286d 8
f5bfdacd 9 Written by:
7050286d 10
f5bfdacd
JL
11 Center for Software Science
12 Department of Computer Science
13 University of Utah
7050286d 14
f5bfdacd 15 This file is part of BFD, the Binary File Descriptor library.
7050286d 16
f5bfdacd
JL
17 This program is free software; you can redistribute it and/or modify
18 it under the terms of the GNU General Public License as published by
19 the Free Software Foundation; either version 2 of the License, or
20 (at your option) any later version.
7050286d 21
f5bfdacd
JL
22 This program is distributed in the hope that it will be useful,
23 but WITHOUT ANY WARRANTY; without even the implied warranty of
24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 GNU General Public License for more details.
7050286d 26
f5bfdacd
JL
27 You should have received a copy of the GNU General Public License
28 along with this program; if not, write to the Free Software
29 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
7050286d
KR
30
31#ifndef _ELF32_HPPA_H
32#define _ELF32_HPPA_H
33
34#include "libelf.h"
4e64845c 35#include "libhppa.h"
459ae909 36#include "elf/hppa.h"
7050286d 37
7050286d
KR
38/* ELF/HPPA relocation types */
39
7050286d
KR
40typedef enum
41 {
459ae909
JL
42 /* Address relocation types
43 These relocation types do simple base + offset relocations. */
44
45 R_PARISC_NONE = 0x00,
46 R_PARISC_DIR32 = 0x01,
47 R_PARISC_DIR21L = 0x02,
48 R_PARISC_DIR17R = 0x03,
49 R_PARISC_DIR17F = 0x04,
50 R_PARISC_DIR14R = 0x06,
51
52 /* PC-relative relocation types
53 Typically used for calls.
54 Note PCREL17C and PCREL17F differ only in overflow handling.
55 PCREL17C never reports a relocation error.
56
57 When supporting argument relocations, function calls must be
58 accompanied by parameter relocation information. This information is
59 carried in the ten high-order bits of the addend field. The remaining
60 22 bits of of the addend field are sign-extended to form the Addend.
f5bfdacd
JL
61
62 Note the code to build argument relocations depends on the
63 addend being zero. A consequence of this limitation is GAS
64 can not perform relocation reductions for function symbols. */
459ae909
JL
65 R_PARISC_PCREL21L = 0x0a,
66 R_PARISC_PCREL17R = 0x0b,
67 R_PARISC_PCREL17F = 0x0c,
68 R_PARISC_PCREL17C = 0x0d,
69 R_PARISC_PCREL14R = 0x0e,
70 R_PARISC_PCREL14F = 0x0f,
f5bfdacd 71
459ae909
JL
72 /* DP-relative relocation types. */
73 R_PARISC_DPREL21L = 0x12,
74 R_PARISC_DPREL14R = 0x16,
75 R_PARISC_DPREL14F = 0x17,
76
77 /* Data linkage table (DLT) relocation types
f5bfdacd
JL
78
79 SOM DLT_REL fixup requests are used to for static data references
80 from position-independent code within shared libraries. They are
81 similar to the GOT relocation types in some SVR4 implementations. */
82
459ae909
JL
83 R_PARISC_DLTREL21L = 0x1a,
84 R_PARISC_DLTREL14R = 0x1e,
85 R_PARISC_DLTREL14F = 0x1f,
86
87 /* DLT indirect relocation types */
88 R_PARISC_DLTIND21L = 0x22,
89 R_PARISC_DLTIND14R = 0x26,
90 R_PARISC_DLTIND14F = 0x27,
91
92 /* Base relative relocation types. Ugh. These imply lots of state */
93 R_PARISC_SETBASE = 0x28,
94 R_PARISC_BASEREL32 = 0x29,
95 R_PARISC_BASEREL21L = 0x2a,
96 R_PARISC_BASEREL17R = 0x2b,
97 R_PARISC_BASEREL17F = 0x2c,
98 R_PARISC_BASEREL14R = 0x2e,
99 R_PARISC_BASEREL14F = 0x2f,
100
101 /* Segment relative relocation types. */
102 R_PARISC_TEXTREL32 = 0x31,
103 R_PARISC_DATAREL32 = 0x39,
104
105 /* Plabel relocation types. */
106 R_PARISC_PLABEL32 = 0x41,
107 R_PARISC_PLABEL21L = 0x42,
108 R_PARISC_PLABEL14R = 0x46,
109
110 /* PLT relocations. */
111 R_PARISC_PLTIND21L = 0x82,
112 R_PARISC_PLTIND14R = 0x86,
113 R_PARISC_PLTIND14F = 0x87,
114
115 /* Misc relocation types. */
116 R_PARISC_COPY = 0x88,
117 R_PARISC_GLOB_DAT = 0x89,
118 R_PARISC_JMP_SLOT = 0x8a,
119 R_PARISC_RELATIVE = 0x8b,
120 R_PARISC_STUB_CALL_17 = 0x8c,
121 R_PARISC_UNIMPLEMENTED,
f5bfdacd
JL
122 }
123elf32_hppa_reloc_type;
7050286d 124
459ae909
JL
125#define ELF_HOWTO_TABLE_SIZE R_PARISC_UNIMPLEMENTED + 1
126#define N_PARISC_RELOCS R_PARISC_UNIMPLEMENTED + 1
7050286d 127
f5bfdacd
JL
128/* Define groups of basic relocations. FIXME: These should
129 be the only basic relocations created by GAS. The rest
130 should be internal to the BFD backend.
131
132 The idea is both SOM and ELF define these basic relocation
133 types so they map into a SOM or ELF specific relocation
134 as appropriate. This allows GAS to share much more code
135 between the two target object formats. */
136
459ae909
JL
137#define R_HPPA_NONE R_PARISC_NONE
138#define R_HPPA R_PARISC_DIR32
139#define R_HPPA_GOTOFF R_PARISC_DPREL21L
140#define R_HPPA_PCREL_CALL R_PARISC_PCREL21L
7050286d 141
f5bfdacd
JL
142/* HPPA symbol table extension entry types */
143enum elf32_hppa_symextn_types
144{
459ae909
JL
145 PARISC_SXT_NULL,
146 PARISC_SXT_SYMNDX,
147 PARISC_SXT_ARG_RELOC,
f5bfdacd 148};
7050286d 149
f5bfdacd
JL
150/* These macros compose and decompose the value of a symextn entry:
151
459ae909
JL
152 entry_type = ELF32_PARISC_SX_TYPE(word);
153 entry_value = ELF32_PARISC_SX_VAL(word);
154 word = ELF32_PARISC_SX_WORD(type,val); */
7050286d 155
459ae909
JL
156#define ELF32_PARISC_SX_TYPE(p) ((p) >> 24)
157#define ELF32_PARISC_SX_VAL(p) ((p) & 0xFFFFFF)
158#define ELF32_PARISC_SX_WORD(type,val) (((type) << 24) + (val & 0xFFFFFF))
7050286d
KR
159
160/* The following was added facilitate implementation of the .hppa_symextn
161 section. This section is built after the symbol table is built in the
162 elf_write_object_contents routine (called from bfd_close). It is built
163 so late because it requires information that is not known until
164 the symbol and string table sections have been allocated, and
165 the symbol table has been built. */
166
f5bfdacd
JL
167/* Number of "hand-made" target specific sections. */
168#define ELF_TC_FAKE_SECTIONS 1
459ae909 169#define SYMEXTN_SECTION_NAME ".PARISC.symext"
7050286d 170
f5bfdacd
JL
171/* FIXME. Are these external? (For example used by GAS?). If so the
172 names need to change to avoid namespace pollution, if not they should
173 be moved into elf32-hppa.c. */
25677b5b 174typedef unsigned long symext_entryS;
7050286d 175struct symext_chain
f5bfdacd
JL
176 {
177 symext_entryS entry;
178 struct symext_chain *next;
179 };
7050286d
KR
180
181typedef struct symext_chain symext_chainS;
182
e08b9ad7
JL
183elf32_hppa_reloc_type **hppa_elf_gen_reloc_type
184 PARAMS ((bfd *, elf32_hppa_reloc_type, int, int));
185
6e58a4e5
JL
186asymbol * hppa_look_for_stubs_in_section
187 PARAMS ((bfd *, bfd *, bfd *, asection *,
e08b9ad7
JL
188 int *, struct bfd_link_info *));
189
f5bfdacd 190void elf_hppa_final_processing PARAMS ((void));
7050286d 191#endif /* _ELF32_HPPA_H */
This page took 0.187283 seconds and 4 git commands to generate.