1 /* Common code for PA ELF implementations.
2 Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
3 Free Software Foundation, Inc.
5 This file is part of BFD, the Binary File Descriptor library.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
22 #define ELF_HOWTO_TABLE_SIZE R_PARISC_UNIMPLEMENTED + 1
24 /* This file is included by multiple PA ELF BFD backends with different
27 Most of the routines are written to be size independent, but sometimes
28 external constraints require 32 or 64 bit specific code. We remap
29 the definitions/functions as necessary here. */
31 #define ELF_R_TYPE(X) ELF64_R_TYPE(X)
32 #define ELF_R_SYM(X) ELF64_R_SYM(X)
33 #define elf_hppa_reloc_final_type elf64_hppa_reloc_final_type
34 #define _bfd_elf_hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type
35 #define elf_hppa_relocate_section elf64_hppa_relocate_section
36 #define elf_hppa_final_link elf64_hppa_final_link
39 #define ELF_R_TYPE(X) ELF32_R_TYPE(X)
40 #define ELF_R_SYM(X) ELF32_R_SYM(X)
41 #define elf_hppa_reloc_final_type elf32_hppa_reloc_final_type
42 #define _bfd_elf_hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type
43 #define elf_hppa_relocate_section elf32_hppa_relocate_section
44 #define elf_hppa_final_link elf32_hppa_final_link
47 /* ELF/PA relocation howto entries. */
49 static reloc_howto_type elf_hppa_howto_table
[ELF_HOWTO_TABLE_SIZE
] =
51 { R_PARISC_NONE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
52 bfd_elf_generic_reloc
, "R_PARISC_NONE", FALSE
, 0, 0, FALSE
},
54 /* The values in DIR32 are to placate the check in
55 _bfd_stab_section_find_nearest_line. */
56 { R_PARISC_DIR32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
57 bfd_elf_generic_reloc
, "R_PARISC_DIR32", FALSE
, 0, 0xffffffff, FALSE
},
58 { R_PARISC_DIR21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
59 bfd_elf_generic_reloc
, "R_PARISC_DIR21L", FALSE
, 0, 0, FALSE
},
60 { R_PARISC_DIR17R
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
61 bfd_elf_generic_reloc
, "R_PARISC_DIR17R", FALSE
, 0, 0, FALSE
},
62 { R_PARISC_DIR17F
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
63 bfd_elf_generic_reloc
, "R_PARISC_DIR17F", FALSE
, 0, 0, FALSE
},
64 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
65 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
66 { R_PARISC_DIR14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
67 bfd_elf_generic_reloc
, "R_PARISC_DIR14R", FALSE
, 0, 0, FALSE
},
68 { R_PARISC_DIR14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
69 bfd_elf_generic_reloc
, "R_PARISC_DIR14F", FALSE
, 0, 0, FALSE
},
71 { R_PARISC_PCREL12F
, 0, 2, 12, TRUE
, 0, complain_overflow_bitfield
,
72 bfd_elf_generic_reloc
, "R_PARISC_PCREL12F", FALSE
, 0, 0, FALSE
},
73 { R_PARISC_PCREL32
, 0, 2, 32, TRUE
, 0, complain_overflow_bitfield
,
74 bfd_elf_generic_reloc
, "R_PARISC_PCREL32", FALSE
, 0, 0, FALSE
},
75 { R_PARISC_PCREL21L
, 0, 2, 21, TRUE
, 0, complain_overflow_bitfield
,
76 bfd_elf_generic_reloc
, "R_PARISC_PCREL21L", FALSE
, 0, 0, FALSE
},
77 { R_PARISC_PCREL17R
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
78 bfd_elf_generic_reloc
, "R_PARISC_PCREL17R", FALSE
, 0, 0, FALSE
},
79 { R_PARISC_PCREL17F
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
80 bfd_elf_generic_reloc
, "R_PARISC_PCREL17F", FALSE
, 0, 0, FALSE
},
81 { R_PARISC_PCREL17C
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
82 bfd_elf_generic_reloc
, "R_PARISC_PCREL17C", FALSE
, 0, 0, FALSE
},
83 { R_PARISC_PCREL14R
, 0, 2, 14, TRUE
, 0, complain_overflow_bitfield
,
84 bfd_elf_generic_reloc
, "R_PARISC_PCREL14R", FALSE
, 0, 0, FALSE
},
85 { R_PARISC_PCREL14F
, 0, 2, 14, TRUE
, 0, complain_overflow_bitfield
,
86 bfd_elf_generic_reloc
, "R_PARISC_PCREL14F", FALSE
, 0, 0, FALSE
},
88 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
89 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
90 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
91 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
92 { R_PARISC_DPREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
93 bfd_elf_generic_reloc
, "R_PARISC_DPREL21L", FALSE
, 0, 0, FALSE
},
94 { R_PARISC_DPREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
95 bfd_elf_generic_reloc
, "R_PARISC_DPREL14WR", FALSE
, 0, 0, FALSE
},
96 { R_PARISC_DPREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
97 bfd_elf_generic_reloc
, "R_PARISC_DPREL14DR", FALSE
, 0, 0, FALSE
},
98 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
99 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
100 { R_PARISC_DPREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
101 bfd_elf_generic_reloc
, "R_PARISC_DPREL14R", FALSE
, 0, 0, FALSE
},
102 { R_PARISC_DPREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
103 bfd_elf_generic_reloc
, "R_PARISC_DPREL14F", FALSE
, 0, 0, FALSE
},
105 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
106 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
107 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
108 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
109 { R_PARISC_DLTREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
110 bfd_elf_generic_reloc
, "R_PARISC_DLTREL21L", FALSE
, 0, 0, FALSE
},
111 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
112 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
113 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
114 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
115 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
116 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
117 { R_PARISC_DLTREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
118 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14R", FALSE
, 0, 0, FALSE
},
119 { R_PARISC_DLTREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
120 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14F", FALSE
, 0, 0, FALSE
},
122 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
123 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
124 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
125 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
126 { R_PARISC_DLTIND21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
127 bfd_elf_generic_reloc
, "R_PARISC_DLTIND21L", FALSE
, 0, 0, FALSE
},
128 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
129 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
130 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
131 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
132 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
133 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
134 { R_PARISC_DLTIND14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
135 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14R", FALSE
, 0, 0, FALSE
},
136 { R_PARISC_DLTIND14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
137 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14F", FALSE
, 0, 0, FALSE
},
139 { R_PARISC_SETBASE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
140 bfd_elf_generic_reloc
, "R_PARISC_SETBASE", FALSE
, 0, 0, FALSE
},
141 { R_PARISC_SECREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
142 bfd_elf_generic_reloc
, "R_PARISC_SECREL32", FALSE
, 0, 0xffffffff, FALSE
},
143 { R_PARISC_BASEREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
144 bfd_elf_generic_reloc
, "R_PARISC_BASEREL21L", FALSE
, 0, 0, FALSE
},
145 { R_PARISC_BASEREL17R
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
146 bfd_elf_generic_reloc
, "R_PARISC_BASEREL17R", FALSE
, 0, 0, FALSE
},
147 { R_PARISC_BASEREL17F
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
148 bfd_elf_generic_reloc
, "R_PARISC_BASEREL17F", FALSE
, 0, 0, FALSE
},
149 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
150 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
151 { R_PARISC_BASEREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
152 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14R", FALSE
, 0, 0, FALSE
},
153 { R_PARISC_BASEREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
154 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14F", FALSE
, 0, 0, FALSE
},
156 { R_PARISC_SEGBASE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
157 bfd_elf_generic_reloc
, "R_PARISC_SEGBASE", FALSE
, 0, 0, FALSE
},
158 { R_PARISC_SEGREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
159 bfd_elf_generic_reloc
, "R_PARISC_SEGREL32", FALSE
, 0, 0, FALSE
},
160 { R_PARISC_PLTOFF21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
161 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF21L", FALSE
, 0, 0, FALSE
},
162 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
163 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
164 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
165 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
166 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
167 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
168 { R_PARISC_PLTOFF14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
169 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14R", FALSE
, 0, 0, FALSE
},
170 { R_PARISC_PLTOFF14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
171 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14F", FALSE
, 0, 0, FALSE
},
173 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
174 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
175 { R_PARISC_LTOFF_FPTR32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
176 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR32", FALSE
, 0, 0, FALSE
},
177 { R_PARISC_LTOFF_FPTR21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
178 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR21L", FALSE
, 0, 0, FALSE
},
179 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
180 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
181 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
182 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
183 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
184 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
185 { R_PARISC_LTOFF_FPTR14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
186 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14R", FALSE
, 0, 0, FALSE
},
187 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
188 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
190 { R_PARISC_FPTR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
191 bfd_elf_generic_reloc
, "R_PARISC_FPTR64", FALSE
, 0, 0, FALSE
},
192 { R_PARISC_PLABEL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
193 bfd_elf_generic_reloc
, "R_PARISC_PLABEL32", FALSE
, 0, 0, FALSE
},
194 { R_PARISC_PLABEL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
195 bfd_elf_generic_reloc
, "R_PARISC_PLABEL21L", FALSE
, 0, 0, FALSE
},
196 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
197 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
198 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
199 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
200 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
201 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
202 { R_PARISC_PLABEL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
203 bfd_elf_generic_reloc
, "R_PARISC_PLABEL14R", FALSE
, 0, 0, FALSE
},
204 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
205 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
207 { R_PARISC_PCREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
208 bfd_elf_generic_reloc
, "R_PARISC_PCREL64", FALSE
, 0, 0, FALSE
},
209 { R_PARISC_PCREL22C
, 0, 2, 22, FALSE
, 0, complain_overflow_bitfield
,
210 bfd_elf_generic_reloc
, "R_PARISC_PCREL22C", FALSE
, 0, 0, FALSE
},
211 { R_PARISC_PCREL22F
, 0, 2, 22, FALSE
, 0, complain_overflow_bitfield
,
212 bfd_elf_generic_reloc
, "R_PARISC_PCREL22F", FALSE
, 0, 0, FALSE
},
213 { R_PARISC_PCREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
214 bfd_elf_generic_reloc
, "R_PARISC_PCREL14WR", FALSE
, 0, 0, FALSE
},
215 { R_PARISC_PCREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
216 bfd_elf_generic_reloc
, "R_PARISC_PCREL14DR", FALSE
, 0, 0, FALSE
},
217 { R_PARISC_PCREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
218 bfd_elf_generic_reloc
, "R_PARISC_PCREL16F", FALSE
, 0, 0, FALSE
},
219 { R_PARISC_PCREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
220 bfd_elf_generic_reloc
, "R_PARISC_PCREL16WF", FALSE
, 0, 0, FALSE
},
221 { R_PARISC_PCREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
222 bfd_elf_generic_reloc
, "R_PARISC_PCREL16DF", FALSE
, 0, 0, FALSE
},
224 { R_PARISC_DIR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
225 bfd_elf_generic_reloc
, "R_PARISC_DIR64", FALSE
, 0, 0, FALSE
},
226 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
227 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
228 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
229 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
230 { R_PARISC_DIR14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
231 bfd_elf_generic_reloc
, "R_PARISC_DIR14WR", FALSE
, 0, 0, FALSE
},
232 { R_PARISC_DIR14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
233 bfd_elf_generic_reloc
, "R_PARISC_DIR14DR", FALSE
, 0, 0, FALSE
},
234 { R_PARISC_DIR16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
235 bfd_elf_generic_reloc
, "R_PARISC_DIR16F", FALSE
, 0, 0, FALSE
},
236 { R_PARISC_DIR16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
237 bfd_elf_generic_reloc
, "R_PARISC_DIR16WF", FALSE
, 0, 0, FALSE
},
238 { R_PARISC_DIR16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
239 bfd_elf_generic_reloc
, "R_PARISC_DIR16DF", FALSE
, 0, 0, FALSE
},
241 { R_PARISC_GPREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
242 bfd_elf_generic_reloc
, "R_PARISC_GPREL64", FALSE
, 0, 0, FALSE
},
243 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
244 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
245 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
246 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
247 { R_PARISC_DLTREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
248 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14WR", FALSE
, 0, 0, FALSE
},
249 { R_PARISC_DLTREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
250 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14DR", FALSE
, 0, 0, FALSE
},
251 { R_PARISC_GPREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
252 bfd_elf_generic_reloc
, "R_PARISC_GPREL16F", FALSE
, 0, 0, FALSE
},
253 { R_PARISC_GPREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
254 bfd_elf_generic_reloc
, "R_PARISC_GPREL16WF", FALSE
, 0, 0, FALSE
},
255 { R_PARISC_GPREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
256 bfd_elf_generic_reloc
, "R_PARISC_GPREL16DF", FALSE
, 0, 0, FALSE
},
258 { R_PARISC_LTOFF64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
259 bfd_elf_generic_reloc
, "R_PARISC_LTOFF64", FALSE
, 0, 0, FALSE
},
260 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
261 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
262 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
263 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
264 { R_PARISC_DLTIND14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
265 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14WR", FALSE
, 0, 0, FALSE
},
266 { R_PARISC_DLTIND14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
267 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14DR", FALSE
, 0, 0, FALSE
},
268 { R_PARISC_LTOFF16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
269 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16F", FALSE
, 0, 0, FALSE
},
270 { R_PARISC_LTOFF16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
271 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16DF", FALSE
, 0, 0, FALSE
},
272 { R_PARISC_LTOFF16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
273 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16DF", FALSE
, 0, 0, FALSE
},
275 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
276 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
277 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
278 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
279 { R_PARISC_BASEREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
280 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14WR", FALSE
, 0, 0, FALSE
},
281 { R_PARISC_BASEREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
282 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14DR", FALSE
, 0, 0, FALSE
},
283 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
284 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
285 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
286 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
287 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
288 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
289 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
290 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
292 { R_PARISC_SEGREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
293 bfd_elf_generic_reloc
, "R_PARISC_SEGREL64", FALSE
, 0, 0, FALSE
},
294 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
295 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
296 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
297 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
298 { R_PARISC_PLTOFF14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
299 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14WR", FALSE
, 0, 0, FALSE
},
300 { R_PARISC_PLTOFF14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
301 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14DR", FALSE
, 0, 0, FALSE
},
302 { R_PARISC_PLTOFF16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
303 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16F", FALSE
, 0, 0, FALSE
},
304 { R_PARISC_PLTOFF16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
305 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16WF", FALSE
, 0, 0, FALSE
},
306 { R_PARISC_PLTOFF16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
307 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16DF", FALSE
, 0, 0, FALSE
},
309 { R_PARISC_LTOFF_FPTR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
310 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
311 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
312 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
313 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
314 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
315 { R_PARISC_LTOFF_FPTR14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
316 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14WR", FALSE
, 0, 0, FALSE
},
317 { R_PARISC_LTOFF_FPTR14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
318 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14DR", FALSE
, 0, 0, FALSE
},
319 { R_PARISC_LTOFF_FPTR16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
320 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR16F", FALSE
, 0, 0, FALSE
},
321 { R_PARISC_LTOFF_FPTR16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
322 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR16WF", FALSE
, 0, 0, FALSE
},
323 { R_PARISC_LTOFF_FPTR16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
324 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
326 { R_PARISC_COPY
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
327 bfd_elf_generic_reloc
, "R_PARISC_COPY", FALSE
, 0, 0, FALSE
},
328 { R_PARISC_IPLT
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
329 bfd_elf_generic_reloc
, "R_PARISC_IPLT", FALSE
, 0, 0, FALSE
},
330 { R_PARISC_EPLT
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
331 bfd_elf_generic_reloc
, "R_PARISC_EPLT", FALSE
, 0, 0, FALSE
},
332 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
333 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
334 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
335 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
336 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
337 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
338 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
339 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
340 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
341 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
343 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
344 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
345 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
346 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
347 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
348 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
349 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
350 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
351 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
352 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
353 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
354 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
355 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
356 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
357 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
358 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
360 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
361 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
362 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
363 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
364 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
365 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
366 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
367 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
368 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
369 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
370 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
371 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
372 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
373 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
374 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
375 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
377 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
378 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
379 { R_PARISC_TPREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_dont
,
380 bfd_elf_generic_reloc
, "R_PARISC_TPREL32", FALSE
, 0, 0, FALSE
},
381 { R_PARISC_TPREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
382 bfd_elf_generic_reloc
, "R_PARISC_TPREL21L", FALSE
, 0, 0, FALSE
},
383 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
384 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
385 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
386 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
387 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
388 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
389 { R_PARISC_TPREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
390 bfd_elf_generic_reloc
, "R_PARISC_TPREL14R", FALSE
, 0, 0, FALSE
},
391 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
392 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
394 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
395 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
396 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
397 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
398 { R_PARISC_LTOFF_TP21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
399 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP21L", FALSE
, 0, 0, FALSE
},
400 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
401 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
402 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
403 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
404 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
405 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
406 { R_PARISC_LTOFF_TP14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
407 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14R", FALSE
, 0, 0, FALSE
},
408 { R_PARISC_LTOFF_TP14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
409 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14F", FALSE
, 0, 0, FALSE
},
411 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
412 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
413 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
414 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
415 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
416 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
417 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
418 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
419 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
420 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
421 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
422 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
423 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
424 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
425 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
426 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
428 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
429 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
430 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
431 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
432 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
433 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
434 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
435 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
436 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
437 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
438 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
439 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
440 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
441 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
442 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
443 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
445 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
446 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
447 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
448 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
449 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
450 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
451 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
452 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
453 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
454 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
455 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
456 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
457 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
458 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
459 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
460 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
462 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
463 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
464 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
465 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
466 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
467 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
468 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
469 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
470 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
471 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
472 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
473 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
474 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
475 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
476 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
477 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
479 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
480 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
481 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
482 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
483 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
484 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
485 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
486 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
487 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
488 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
489 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
490 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
491 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
492 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
493 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
494 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
496 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
497 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
498 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
499 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
500 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
501 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
502 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
503 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
504 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
505 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
506 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
507 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
508 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
509 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
510 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
511 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
513 { R_PARISC_TPREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
514 bfd_elf_generic_reloc
, "R_PARISC_TPREL64", FALSE
, 0, 0, FALSE
},
515 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
516 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
517 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
518 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
519 { R_PARISC_TPREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_dont
,
520 bfd_elf_generic_reloc
, "R_PARISC_TPREL14WR", FALSE
, 0, 0, FALSE
},
521 { R_PARISC_TPREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
522 bfd_elf_generic_reloc
, "R_PARISC_TPREL14DR", FALSE
, 0, 0, FALSE
},
523 { R_PARISC_TPREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
524 bfd_elf_generic_reloc
, "R_PARISC_TPREL16F", FALSE
, 0, 0, FALSE
},
525 { R_PARISC_TPREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_dont
,
526 bfd_elf_generic_reloc
, "R_PARISC_TPREL16WF", FALSE
, 0, 0, FALSE
},
527 { R_PARISC_TPREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
528 bfd_elf_generic_reloc
, "R_PARISC_TPREL16DF", FALSE
, 0, 0, FALSE
},
530 { R_PARISC_LTOFF_TP64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
531 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP64", FALSE
, 0, 0, FALSE
},
532 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
533 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
534 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
535 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
536 { R_PARISC_LTOFF_TP14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
537 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14WR", FALSE
, 0, 0, FALSE
},
538 { R_PARISC_LTOFF_TP14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
539 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14DR", FALSE
, 0, 0, FALSE
},
540 { R_PARISC_LTOFF_TP16F
, 0, 2, 16, FALSE
, 0, complain_overflow_dont
,
541 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16F", FALSE
, 0, 0, FALSE
},
542 { R_PARISC_LTOFF_TP16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
543 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16WF", FALSE
, 0, 0, FALSE
},
544 { R_PARISC_LTOFF_TP16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
545 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16DF", FALSE
, 0, 0, FALSE
},
547 { R_PARISC_GNU_VTENTRY
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
548 bfd_elf_generic_reloc
, "R_PARISC_GNU_VTENTRY", FALSE
, 0, 0, FALSE
},
549 { R_PARISC_GNU_VTINHERIT
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
550 bfd_elf_generic_reloc
, "R_PARISC_GNU_VTINHERIT", FALSE
, 0, 0, FALSE
},
551 { R_PARISC_TLS_GD21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
552 bfd_elf_generic_reloc
, "R_PARISC_TLS_GD21L", FALSE
, 0, 0, FALSE
},
553 { R_PARISC_TLS_GD14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
554 bfd_elf_generic_reloc
, "R_PARISC_TLS_GD14R", FALSE
, 0, 0, FALSE
},
555 { R_PARISC_TLS_GDCALL
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
556 bfd_elf_generic_reloc
, "R_PARISC_TLS_GDCALL", FALSE
, 0, 0, FALSE
},
557 { R_PARISC_TLS_LDM21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
558 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDM21L", FALSE
, 0, 0, FALSE
},
559 { R_PARISC_TLS_LDM14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
560 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDM14R", FALSE
, 0, 0, FALSE
},
561 { R_PARISC_TLS_LDMCALL
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
562 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDMCALL", FALSE
, 0, 0, FALSE
},
564 { R_PARISC_TLS_LDO21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
565 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDO21L", FALSE
, 0, 0, FALSE
},
566 { R_PARISC_TLS_LDO14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
567 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDO14R", FALSE
, 0, 0, FALSE
},
568 { R_PARISC_TLS_DTPMOD32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
569 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPMOD32", FALSE
, 0, 0, FALSE
},
570 { R_PARISC_TLS_DTPMOD64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
571 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPMOD64", FALSE
, 0, 0, FALSE
},
572 { R_PARISC_TLS_DTPOFF32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
573 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPOFF32", FALSE
, 0, 0, FALSE
},
574 { R_PARISC_TLS_DTPOFF64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
575 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPOFF64", FALSE
, 0, 0, FALSE
},
578 #define OFFSET_14R_FROM_21L 4
579 #define OFFSET_14F_FROM_21L 5
581 /* Return the final relocation type for the given base type, instruction
582 format, and field selector. */
585 elf_hppa_reloc_final_type (bfd
*abfd
,
586 elf_hppa_reloc_type base_type
,
590 elf_hppa_reloc_type final_type
= base_type
;
592 /* Just a tangle of nested switch statements to deal with the braindamage
593 that a different field selector means a completely different relocation
597 /* We have been using generic relocation types. However, that may not
598 really make sense. Anyway, we need to support both R_PARISC_DIR64
599 and R_PARISC_DIR32 here. */
602 case R_HPPA_ABS_CALL
:
609 final_type
= R_PARISC_DIR14F
;
614 final_type
= R_PARISC_DIR14R
;
617 final_type
= R_PARISC_DLTIND14R
;
620 final_type
= R_PARISC_LTOFF_FPTR14DR
;
623 final_type
= R_PARISC_DLTIND14F
;
626 final_type
= R_PARISC_PLABEL14R
;
629 return R_PARISC_NONE
;
637 final_type
= R_PARISC_DIR17F
;
642 final_type
= R_PARISC_DIR17R
;
645 return R_PARISC_NONE
;
657 final_type
= R_PARISC_DIR21L
;
660 final_type
= R_PARISC_DLTIND21L
;
663 final_type
= R_PARISC_LTOFF_FPTR21L
;
666 final_type
= R_PARISC_PLABEL21L
;
669 return R_PARISC_NONE
;
677 final_type
= R_PARISC_DIR32
;
678 /* When in 64bit mode, a 32bit relocation is supposed to
679 be a section relative relocation. Dwarf2 (for example)
680 uses 32bit section relative relocations. */
681 if (bfd_get_arch_info (abfd
)->bits_per_address
!= 32)
682 final_type
= R_PARISC_SECREL32
;
685 final_type
= R_PARISC_PLABEL32
;
688 return R_PARISC_NONE
;
696 final_type
= R_PARISC_DIR64
;
699 final_type
= R_PARISC_FPTR64
;
702 return R_PARISC_NONE
;
707 return R_PARISC_NONE
;
720 /* R_PARISC_DLTREL14R for elf64, R_PARISC_DPREL14R for elf32. */
721 final_type
= base_type
+ OFFSET_14R_FROM_21L
;
724 /* R_PARISC_DLTREL14F for elf64, R_PARISC_DPREL14F for elf32. */
725 final_type
= base_type
+ OFFSET_14F_FROM_21L
;
728 return R_PARISC_NONE
;
740 /* R_PARISC_DLTREL21L for elf64, R_PARISC_DPREL21L for elf32. */
741 final_type
= base_type
;
744 return R_PARISC_NONE
;
752 final_type
= R_PARISC_GPREL64
;
755 return R_PARISC_NONE
;
760 return R_PARISC_NONE
;
764 case R_HPPA_PCREL_CALL
:
771 final_type
= R_PARISC_PCREL12F
;
774 return R_PARISC_NONE
;
779 /* Contrary to appearances, these are not calls of any sort.
780 Rather, they are loads/stores with a pcrel reloc. */
786 final_type
= R_PARISC_PCREL14R
;
789 if (bfd_get_mach (abfd
) < 25)
790 final_type
= R_PARISC_PCREL14F
;
792 final_type
= R_PARISC_PCREL16F
;
795 return R_PARISC_NONE
;
805 final_type
= R_PARISC_PCREL17R
;
808 final_type
= R_PARISC_PCREL17F
;
811 return R_PARISC_NONE
;
823 final_type
= R_PARISC_PCREL21L
;
826 return R_PARISC_NONE
;
834 final_type
= R_PARISC_PCREL22F
;
837 return R_PARISC_NONE
;
845 final_type
= R_PARISC_PCREL32
;
848 return R_PARISC_NONE
;
856 final_type
= R_PARISC_PCREL64
;
859 return R_PARISC_NONE
;
864 return R_PARISC_NONE
;
868 case R_PARISC_TLS_GD21L
:
873 final_type
= R_PARISC_TLS_GD21L
;
877 final_type
= R_PARISC_TLS_GD14R
;
880 return R_PARISC_NONE
;
884 case R_PARISC_TLS_LDM21L
:
889 final_type
= R_PARISC_TLS_LDM21L
;
893 final_type
= R_PARISC_TLS_LDM14R
;
896 return R_PARISC_NONE
;
900 case R_PARISC_TLS_LDO21L
:
904 final_type
= R_PARISC_TLS_LDO21L
;
907 final_type
= R_PARISC_TLS_LDO14R
;
910 return R_PARISC_NONE
;
914 case R_PARISC_TLS_IE21L
:
919 final_type
= R_PARISC_TLS_IE21L
;
923 final_type
= R_PARISC_TLS_IE14R
;
926 return R_PARISC_NONE
;
930 case R_PARISC_TLS_LE21L
:
934 final_type
= R_PARISC_TLS_LE21L
;
937 final_type
= R_PARISC_TLS_LE14R
;
940 return R_PARISC_NONE
;
944 case R_PARISC_SEGREL32
:
951 final_type
= R_PARISC_SEGREL32
;
954 return R_PARISC_NONE
;
962 final_type
= R_PARISC_SEGREL64
;
965 return R_PARISC_NONE
;
970 return R_PARISC_NONE
;
974 case R_PARISC_GNU_VTENTRY
:
975 case R_PARISC_GNU_VTINHERIT
:
976 case R_PARISC_SEGBASE
:
977 /* The defaults are fine for these cases. */
981 return R_PARISC_NONE
;
987 /* Return one (or more) BFD relocations which implement the base
988 relocation with modifications based on format and field. */
990 elf_hppa_reloc_type
**
991 _bfd_elf_hppa_gen_reloc_type (bfd
*abfd
,
992 elf_hppa_reloc_type base_type
,
995 int ignore ATTRIBUTE_UNUSED
,
996 asymbol
*sym ATTRIBUTE_UNUSED
)
998 elf_hppa_reloc_type
*finaltype
;
999 elf_hppa_reloc_type
**final_types
;
1000 bfd_size_type amt
= sizeof (elf_hppa_reloc_type
*) * 2;
1002 /* Allocate slots for the BFD relocation. */
1003 final_types
= bfd_alloc (abfd
, amt
);
1004 if (final_types
== NULL
)
1007 /* Allocate space for the relocation itself. */
1008 amt
= sizeof (elf_hppa_reloc_type
);
1009 finaltype
= bfd_alloc (abfd
, amt
);
1010 if (finaltype
== NULL
)
1013 /* Some reasonable defaults. */
1014 final_types
[0] = finaltype
;
1015 final_types
[1] = NULL
;
1017 *finaltype
= elf_hppa_reloc_final_type (abfd
, base_type
, format
, field
);
1022 /* Translate from an elf into field into a howto relocation pointer. */
1025 elf_hppa_info_to_howto (bfd
*abfd ATTRIBUTE_UNUSED
,
1027 Elf_Internal_Rela
*elf_reloc
)
1029 BFD_ASSERT (ELF_R_TYPE (elf_reloc
->r_info
)
1030 < (unsigned int) R_PARISC_UNIMPLEMENTED
);
1031 bfd_reloc
->howto
= &elf_hppa_howto_table
[ELF_R_TYPE (elf_reloc
->r_info
)];
1034 /* Translate from an elf into field into a howto relocation pointer. */
1037 elf_hppa_info_to_howto_rel (bfd
*abfd ATTRIBUTE_UNUSED
,
1039 Elf_Internal_Rela
*elf_reloc
)
1041 BFD_ASSERT (ELF_R_TYPE (elf_reloc
->r_info
)
1042 < (unsigned int) R_PARISC_UNIMPLEMENTED
);
1043 bfd_reloc
->howto
= &elf_hppa_howto_table
[ELF_R_TYPE (elf_reloc
->r_info
)];
1046 /* Return the address of the howto table entry to perform the CODE
1047 relocation for an ARCH machine. */
1049 static reloc_howto_type
*
1050 elf_hppa_reloc_type_lookup (bfd
*abfd ATTRIBUTE_UNUSED
,
1051 bfd_reloc_code_real_type code
)
1053 if ((int) code
< (int) R_PARISC_UNIMPLEMENTED
)
1055 BFD_ASSERT ((int) elf_hppa_howto_table
[(int) code
].type
== (int) code
);
1056 return &elf_hppa_howto_table
[(int) code
];
1061 static reloc_howto_type
*
1062 elf_hppa_reloc_name_lookup (bfd
*abfd ATTRIBUTE_UNUSED
,
1068 i
< sizeof (elf_hppa_howto_table
) / sizeof (elf_hppa_howto_table
[0]);
1070 if (elf_hppa_howto_table
[i
].name
!= NULL
1071 && strcasecmp (elf_hppa_howto_table
[i
].name
, r_name
) == 0)
1072 return &elf_hppa_howto_table
[i
];
1077 /* Return TRUE if SYM represents a local label symbol. */
1080 elf_hppa_is_local_label_name (bfd
*abfd ATTRIBUTE_UNUSED
, const char *name
)
1082 if (name
[0] == 'L' && name
[1] == '$')
1084 return _bfd_elf_is_local_label_name (abfd
, name
);
1087 /* Set the correct type for an ELF section. We do this by the
1088 section name, which is a hack, but ought to work. */
1091 elf_hppa_fake_sections (bfd
*abfd
, Elf_Internal_Shdr
*hdr
, asection
*sec
)
1095 name
= bfd_get_section_name (abfd
, sec
);
1097 if (strcmp (name
, ".PARISC.unwind") == 0)
1103 hdr
->sh_type
= SHT_LOPROC
+ 1;
1107 /* ?!? How are unwinds supposed to work for symbols in arbitrary
1108 sections? Or what if we have multiple .text sections in a single
1109 .o file? HP really messed up on this one.
1111 Ugh. We can not use elf_section_data (sec)->this_idx at this
1112 point because it is not initialized yet.
1114 So we (gasp) recompute it here. Hopefully nobody ever changes the
1115 way sections are numbered in elf.c! */
1116 for (asec
= abfd
->sections
, indx
= 1; asec
; asec
= asec
->next
, indx
++)
1118 if (asec
->name
&& strcmp (asec
->name
, ".text") == 0)
1120 hdr
->sh_info
= indx
;
1125 /* I have no idea if this is really necessary or what it means. */
1126 hdr
->sh_entsize
= 4;
1132 elf_hppa_final_write_processing (bfd
*abfd
,
1133 bfd_boolean linker ATTRIBUTE_UNUSED
)
1135 int mach
= bfd_get_mach (abfd
);
1137 elf_elfheader (abfd
)->e_flags
&= ~(EF_PARISC_ARCH
| EF_PARISC_TRAPNIL
1138 | EF_PARISC_EXT
| EF_PARISC_LSB
1139 | EF_PARISC_WIDE
| EF_PARISC_NO_KABP
1140 | EF_PARISC_LAZYSWAP
);
1143 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_1_0
;
1144 else if (mach
== 11)
1145 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_1_1
;
1146 else if (mach
== 20)
1147 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_2_0
;
1148 else if (mach
== 25)
1149 elf_elfheader (abfd
)->e_flags
|= (EF_PARISC_WIDE
1151 /* The GNU tools have trapped without
1152 option since 1993, so need to take
1153 a step backwards with the ELF
1154 based toolchains. */
1155 | EF_PARISC_TRAPNIL
);
1158 /* Comparison function for qsort to sort unwind section during a
1162 hppa_unwind_entry_compare (const void *a
, const void *b
)
1164 const bfd_byte
*ap
, *bp
;
1165 unsigned long av
, bv
;
1168 av
= (unsigned long) ap
[0] << 24;
1169 av
|= (unsigned long) ap
[1] << 16;
1170 av
|= (unsigned long) ap
[2] << 8;
1171 av
|= (unsigned long) ap
[3];
1174 bv
= (unsigned long) bp
[0] << 24;
1175 bv
|= (unsigned long) bp
[1] << 16;
1176 bv
|= (unsigned long) bp
[2] << 8;
1177 bv
|= (unsigned long) bp
[3];
1179 return av
< bv
? -1 : av
> bv
? 1 : 0;
1183 elf_hppa_sort_unwind (bfd
*abfd
)
1187 /* Magic section names, but this is much safer than having
1188 relocate_section remember where SEGREL32 relocs occurred.
1189 Consider what happens if someone inept creates a linker script
1190 that puts unwind information in .text. */
1191 s
= bfd_get_section_by_name (abfd
, ".PARISC.unwind");
1197 if (!bfd_malloc_and_get_section (abfd
, s
, &contents
))
1201 qsort (contents
, (size_t) (size
/ 16), 16, hppa_unwind_entry_compare
);
1203 if (! bfd_set_section_contents (abfd
, s
, contents
, (file_ptr
) 0, size
))
1210 /* What to do when ld finds relocations against symbols defined in
1211 discarded sections. */
1214 elf_hppa_action_discarded (asection
*sec
)
1216 if (strcmp (".PARISC.unwind", sec
->name
) == 0)
1219 return _bfd_elf_default_action_discarded (sec
);