1 /* Common code for PA ELF implementations.
2 Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4 Free Software Foundation, Inc.
6 This file is part of BFD, the Binary File Descriptor library.
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 3 of the License, or
11 (at your option) any later version.
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.
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., 51 Franklin Street - Fifth Floor, Boston,
21 MA 02110-1301, USA. */
23 #define ELF_HOWTO_TABLE_SIZE R_PARISC_UNIMPLEMENTED + 1
25 /* This file is included by multiple PA ELF BFD backends with different
28 Most of the routines are written to be size independent, but sometimes
29 external constraints require 32 or 64 bit specific code. We remap
30 the definitions/functions as necessary here. */
32 #define ELF_R_TYPE(X) ELF64_R_TYPE(X)
33 #define ELF_R_SYM(X) ELF64_R_SYM(X)
34 #define elf_hppa_reloc_final_type elf64_hppa_reloc_final_type
35 #define _bfd_elf_hppa_gen_reloc_type _bfd_elf64_hppa_gen_reloc_type
36 #define elf_hppa_relocate_section elf64_hppa_relocate_section
37 #define elf_hppa_final_link elf64_hppa_final_link
40 #define ELF_R_TYPE(X) ELF32_R_TYPE(X)
41 #define ELF_R_SYM(X) ELF32_R_SYM(X)
42 #define elf_hppa_reloc_final_type elf32_hppa_reloc_final_type
43 #define _bfd_elf_hppa_gen_reloc_type _bfd_elf32_hppa_gen_reloc_type
44 #define elf_hppa_relocate_section elf32_hppa_relocate_section
45 #define elf_hppa_final_link elf32_hppa_final_link
48 /* ELF/PA relocation howto entries. */
50 static reloc_howto_type elf_hppa_howto_table
[ELF_HOWTO_TABLE_SIZE
] =
52 { R_PARISC_NONE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
53 bfd_elf_generic_reloc
, "R_PARISC_NONE", FALSE
, 0, 0, FALSE
},
55 /* The values in DIR32 are to placate the check in
56 _bfd_stab_section_find_nearest_line. */
57 { R_PARISC_DIR32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
58 bfd_elf_generic_reloc
, "R_PARISC_DIR32", FALSE
, 0, 0xffffffff, FALSE
},
59 { R_PARISC_DIR21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
60 bfd_elf_generic_reloc
, "R_PARISC_DIR21L", FALSE
, 0, 0, FALSE
},
61 { R_PARISC_DIR17R
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
62 bfd_elf_generic_reloc
, "R_PARISC_DIR17R", FALSE
, 0, 0, FALSE
},
63 { R_PARISC_DIR17F
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
64 bfd_elf_generic_reloc
, "R_PARISC_DIR17F", FALSE
, 0, 0, FALSE
},
65 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
66 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
67 { R_PARISC_DIR14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
68 bfd_elf_generic_reloc
, "R_PARISC_DIR14R", FALSE
, 0, 0, FALSE
},
69 { R_PARISC_DIR14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
70 bfd_elf_generic_reloc
, "R_PARISC_DIR14F", FALSE
, 0, 0, FALSE
},
72 { R_PARISC_PCREL12F
, 0, 2, 12, TRUE
, 0, complain_overflow_bitfield
,
73 bfd_elf_generic_reloc
, "R_PARISC_PCREL12F", FALSE
, 0, 0, FALSE
},
74 { R_PARISC_PCREL32
, 0, 2, 32, TRUE
, 0, complain_overflow_bitfield
,
75 bfd_elf_generic_reloc
, "R_PARISC_PCREL32", FALSE
, 0, 0, FALSE
},
76 { R_PARISC_PCREL21L
, 0, 2, 21, TRUE
, 0, complain_overflow_bitfield
,
77 bfd_elf_generic_reloc
, "R_PARISC_PCREL21L", FALSE
, 0, 0, FALSE
},
78 { R_PARISC_PCREL17R
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
79 bfd_elf_generic_reloc
, "R_PARISC_PCREL17R", FALSE
, 0, 0, FALSE
},
80 { R_PARISC_PCREL17F
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
81 bfd_elf_generic_reloc
, "R_PARISC_PCREL17F", FALSE
, 0, 0, FALSE
},
82 { R_PARISC_PCREL17C
, 0, 2, 17, TRUE
, 0, complain_overflow_bitfield
,
83 bfd_elf_generic_reloc
, "R_PARISC_PCREL17C", FALSE
, 0, 0, FALSE
},
84 { R_PARISC_PCREL14R
, 0, 2, 14, TRUE
, 0, complain_overflow_bitfield
,
85 bfd_elf_generic_reloc
, "R_PARISC_PCREL14R", FALSE
, 0, 0, FALSE
},
86 { R_PARISC_PCREL14F
, 0, 2, 14, TRUE
, 0, complain_overflow_bitfield
,
87 bfd_elf_generic_reloc
, "R_PARISC_PCREL14F", FALSE
, 0, 0, FALSE
},
89 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
90 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
91 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
92 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
93 { R_PARISC_DPREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
94 bfd_elf_generic_reloc
, "R_PARISC_DPREL21L", FALSE
, 0, 0, FALSE
},
95 { R_PARISC_DPREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
96 bfd_elf_generic_reloc
, "R_PARISC_DPREL14WR", FALSE
, 0, 0, FALSE
},
97 { R_PARISC_DPREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
98 bfd_elf_generic_reloc
, "R_PARISC_DPREL14DR", FALSE
, 0, 0, FALSE
},
99 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
100 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
101 { R_PARISC_DPREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
102 bfd_elf_generic_reloc
, "R_PARISC_DPREL14R", FALSE
, 0, 0, FALSE
},
103 { R_PARISC_DPREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
104 bfd_elf_generic_reloc
, "R_PARISC_DPREL14F", FALSE
, 0, 0, FALSE
},
106 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
107 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
108 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
109 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
110 { R_PARISC_DLTREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
111 bfd_elf_generic_reloc
, "R_PARISC_DLTREL21L", FALSE
, 0, 0, FALSE
},
112 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
113 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
114 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
115 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
116 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
117 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
118 { R_PARISC_DLTREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
119 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14R", FALSE
, 0, 0, FALSE
},
120 { R_PARISC_DLTREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
121 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14F", FALSE
, 0, 0, FALSE
},
123 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
124 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
125 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
126 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
127 { R_PARISC_DLTIND21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
128 bfd_elf_generic_reloc
, "R_PARISC_DLTIND21L", FALSE
, 0, 0, FALSE
},
129 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
130 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
131 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
132 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
133 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
134 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
135 { R_PARISC_DLTIND14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
136 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14R", FALSE
, 0, 0, FALSE
},
137 { R_PARISC_DLTIND14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
138 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14F", FALSE
, 0, 0, FALSE
},
140 { R_PARISC_SETBASE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
141 bfd_elf_generic_reloc
, "R_PARISC_SETBASE", FALSE
, 0, 0, FALSE
},
142 { R_PARISC_SECREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
143 bfd_elf_generic_reloc
, "R_PARISC_SECREL32", FALSE
, 0, 0xffffffff, FALSE
},
144 { R_PARISC_BASEREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
145 bfd_elf_generic_reloc
, "R_PARISC_BASEREL21L", FALSE
, 0, 0, FALSE
},
146 { R_PARISC_BASEREL17R
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
147 bfd_elf_generic_reloc
, "R_PARISC_BASEREL17R", FALSE
, 0, 0, FALSE
},
148 { R_PARISC_BASEREL17F
, 0, 2, 17, FALSE
, 0, complain_overflow_bitfield
,
149 bfd_elf_generic_reloc
, "R_PARISC_BASEREL17F", FALSE
, 0, 0, FALSE
},
150 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
151 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
152 { R_PARISC_BASEREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
153 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14R", FALSE
, 0, 0, FALSE
},
154 { R_PARISC_BASEREL14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
155 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14F", FALSE
, 0, 0, FALSE
},
157 { R_PARISC_SEGBASE
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
158 bfd_elf_generic_reloc
, "R_PARISC_SEGBASE", FALSE
, 0, 0, FALSE
},
159 { R_PARISC_SEGREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
160 bfd_elf_generic_reloc
, "R_PARISC_SEGREL32", FALSE
, 0, 0, FALSE
},
161 { R_PARISC_PLTOFF21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
162 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF21L", FALSE
, 0, 0, FALSE
},
163 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
164 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
165 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
166 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
167 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
168 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
169 { R_PARISC_PLTOFF14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
170 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14R", FALSE
, 0, 0, FALSE
},
171 { R_PARISC_PLTOFF14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
172 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14F", FALSE
, 0, 0, FALSE
},
174 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
175 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
176 { R_PARISC_LTOFF_FPTR32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
177 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR32", FALSE
, 0, 0, FALSE
},
178 { R_PARISC_LTOFF_FPTR21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
179 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR21L", FALSE
, 0, 0, FALSE
},
180 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
181 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
182 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
183 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
184 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
185 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
186 { R_PARISC_LTOFF_FPTR14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
187 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14R", FALSE
, 0, 0, FALSE
},
188 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
189 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
191 { R_PARISC_FPTR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
192 bfd_elf_generic_reloc
, "R_PARISC_FPTR64", FALSE
, 0, 0, FALSE
},
193 { R_PARISC_PLABEL32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
194 bfd_elf_generic_reloc
, "R_PARISC_PLABEL32", FALSE
, 0, 0, FALSE
},
195 { R_PARISC_PLABEL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
196 bfd_elf_generic_reloc
, "R_PARISC_PLABEL21L", FALSE
, 0, 0, FALSE
},
197 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
198 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
199 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
200 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
201 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
202 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
203 { R_PARISC_PLABEL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
204 bfd_elf_generic_reloc
, "R_PARISC_PLABEL14R", FALSE
, 0, 0, FALSE
},
205 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
206 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
208 { R_PARISC_PCREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
209 bfd_elf_generic_reloc
, "R_PARISC_PCREL64", FALSE
, 0, 0, FALSE
},
210 { R_PARISC_PCREL22C
, 0, 2, 22, FALSE
, 0, complain_overflow_bitfield
,
211 bfd_elf_generic_reloc
, "R_PARISC_PCREL22C", FALSE
, 0, 0, FALSE
},
212 { R_PARISC_PCREL22F
, 0, 2, 22, FALSE
, 0, complain_overflow_bitfield
,
213 bfd_elf_generic_reloc
, "R_PARISC_PCREL22F", FALSE
, 0, 0, FALSE
},
214 { R_PARISC_PCREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
215 bfd_elf_generic_reloc
, "R_PARISC_PCREL14WR", FALSE
, 0, 0, FALSE
},
216 { R_PARISC_PCREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
217 bfd_elf_generic_reloc
, "R_PARISC_PCREL14DR", FALSE
, 0, 0, FALSE
},
218 { R_PARISC_PCREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
219 bfd_elf_generic_reloc
, "R_PARISC_PCREL16F", FALSE
, 0, 0, FALSE
},
220 { R_PARISC_PCREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
221 bfd_elf_generic_reloc
, "R_PARISC_PCREL16WF", FALSE
, 0, 0, FALSE
},
222 { R_PARISC_PCREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
223 bfd_elf_generic_reloc
, "R_PARISC_PCREL16DF", FALSE
, 0, 0, FALSE
},
225 { R_PARISC_DIR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
226 bfd_elf_generic_reloc
, "R_PARISC_DIR64", FALSE
, 0, 0, FALSE
},
227 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
228 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
229 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
230 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
231 { R_PARISC_DIR14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
232 bfd_elf_generic_reloc
, "R_PARISC_DIR14WR", FALSE
, 0, 0, FALSE
},
233 { R_PARISC_DIR14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
234 bfd_elf_generic_reloc
, "R_PARISC_DIR14DR", FALSE
, 0, 0, FALSE
},
235 { R_PARISC_DIR16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
236 bfd_elf_generic_reloc
, "R_PARISC_DIR16F", FALSE
, 0, 0, FALSE
},
237 { R_PARISC_DIR16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
238 bfd_elf_generic_reloc
, "R_PARISC_DIR16WF", FALSE
, 0, 0, FALSE
},
239 { R_PARISC_DIR16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
240 bfd_elf_generic_reloc
, "R_PARISC_DIR16DF", FALSE
, 0, 0, FALSE
},
242 { R_PARISC_GPREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
243 bfd_elf_generic_reloc
, "R_PARISC_GPREL64", FALSE
, 0, 0, FALSE
},
244 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
245 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
246 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
247 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
248 { R_PARISC_DLTREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
249 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14WR", FALSE
, 0, 0, FALSE
},
250 { R_PARISC_DLTREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
251 bfd_elf_generic_reloc
, "R_PARISC_DLTREL14DR", FALSE
, 0, 0, FALSE
},
252 { R_PARISC_GPREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
253 bfd_elf_generic_reloc
, "R_PARISC_GPREL16F", FALSE
, 0, 0, FALSE
},
254 { R_PARISC_GPREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
255 bfd_elf_generic_reloc
, "R_PARISC_GPREL16WF", FALSE
, 0, 0, FALSE
},
256 { R_PARISC_GPREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
257 bfd_elf_generic_reloc
, "R_PARISC_GPREL16DF", FALSE
, 0, 0, FALSE
},
259 { R_PARISC_LTOFF64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
260 bfd_elf_generic_reloc
, "R_PARISC_LTOFF64", FALSE
, 0, 0, FALSE
},
261 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
262 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
263 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
264 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
265 { R_PARISC_DLTIND14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
266 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14WR", FALSE
, 0, 0, FALSE
},
267 { R_PARISC_DLTIND14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
268 bfd_elf_generic_reloc
, "R_PARISC_DLTIND14DR", FALSE
, 0, 0, FALSE
},
269 { R_PARISC_LTOFF16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
270 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16F", FALSE
, 0, 0, FALSE
},
271 { R_PARISC_LTOFF16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
272 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16DF", FALSE
, 0, 0, FALSE
},
273 { R_PARISC_LTOFF16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
274 bfd_elf_generic_reloc
, "R_PARISC_LTOFF16DF", FALSE
, 0, 0, FALSE
},
276 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
277 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
278 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
279 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
280 { R_PARISC_BASEREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
281 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14WR", FALSE
, 0, 0, FALSE
},
282 { R_PARISC_BASEREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
283 bfd_elf_generic_reloc
, "R_PARISC_BASEREL14DR", FALSE
, 0, 0, FALSE
},
284 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
285 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
286 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
287 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
288 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
289 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
290 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
291 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
293 { R_PARISC_SEGREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
294 bfd_elf_generic_reloc
, "R_PARISC_SEGREL64", FALSE
, 0, 0, FALSE
},
295 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
296 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
297 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
298 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
299 { R_PARISC_PLTOFF14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
300 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14WR", FALSE
, 0, 0, FALSE
},
301 { R_PARISC_PLTOFF14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
302 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF14DR", FALSE
, 0, 0, FALSE
},
303 { R_PARISC_PLTOFF16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
304 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16F", FALSE
, 0, 0, FALSE
},
305 { R_PARISC_PLTOFF16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
306 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16WF", FALSE
, 0, 0, FALSE
},
307 { R_PARISC_PLTOFF16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
308 bfd_elf_generic_reloc
, "R_PARISC_PLTOFF16DF", FALSE
, 0, 0, FALSE
},
310 { R_PARISC_LTOFF_FPTR64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
311 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
312 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
313 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
314 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
315 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
316 { R_PARISC_LTOFF_FPTR14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
317 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14WR", FALSE
, 0, 0, FALSE
},
318 { R_PARISC_LTOFF_FPTR14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
319 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR14DR", FALSE
, 0, 0, FALSE
},
320 { R_PARISC_LTOFF_FPTR16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
321 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR16F", FALSE
, 0, 0, FALSE
},
322 { R_PARISC_LTOFF_FPTR16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
323 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_FPTR16WF", FALSE
, 0, 0, FALSE
},
324 { R_PARISC_LTOFF_FPTR16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
325 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
327 { R_PARISC_COPY
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
328 bfd_elf_generic_reloc
, "R_PARISC_COPY", FALSE
, 0, 0, FALSE
},
329 { R_PARISC_IPLT
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
330 bfd_elf_generic_reloc
, "R_PARISC_IPLT", FALSE
, 0, 0, FALSE
},
331 { R_PARISC_EPLT
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
332 bfd_elf_generic_reloc
, "R_PARISC_EPLT", FALSE
, 0, 0, FALSE
},
333 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
334 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
335 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
336 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
337 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
338 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
339 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
340 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
341 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
342 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
344 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
345 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
346 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
347 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
348 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
349 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
350 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
351 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
352 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
353 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
354 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
355 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
356 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
357 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
358 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
359 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
361 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
362 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
363 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
364 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
365 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
366 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
367 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
368 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
369 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
370 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
371 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
372 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
373 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
374 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
375 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
376 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
378 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
379 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
380 { R_PARISC_TPREL32
, 0, 2, 32, FALSE
, 0, complain_overflow_dont
,
381 bfd_elf_generic_reloc
, "R_PARISC_TPREL32", FALSE
, 0, 0, FALSE
},
382 { R_PARISC_TPREL21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
383 bfd_elf_generic_reloc
, "R_PARISC_TPREL21L", FALSE
, 0, 0, FALSE
},
384 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
385 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
386 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
387 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
388 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
389 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
390 { R_PARISC_TPREL14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
391 bfd_elf_generic_reloc
, "R_PARISC_TPREL14R", FALSE
, 0, 0, FALSE
},
392 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
393 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
395 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
396 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
397 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
398 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
399 { R_PARISC_LTOFF_TP21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
400 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP21L", FALSE
, 0, 0, FALSE
},
401 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
402 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
403 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
404 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
405 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
406 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
407 { R_PARISC_LTOFF_TP14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
408 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14R", FALSE
, 0, 0, FALSE
},
409 { R_PARISC_LTOFF_TP14F
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
410 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14F", FALSE
, 0, 0, FALSE
},
412 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
413 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
414 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
415 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
416 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
417 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
418 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
419 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
420 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
421 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
422 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
423 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
424 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
425 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
426 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
427 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
429 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
430 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
431 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
432 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
433 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
434 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
435 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
436 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
437 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
438 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
439 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
440 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
441 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
442 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
443 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
444 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
446 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
447 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
448 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
449 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
450 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
451 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
452 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
453 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
454 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
455 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
456 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
457 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
458 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
459 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
460 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
461 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
463 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
464 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
465 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
466 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
467 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
468 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
469 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
470 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
471 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
472 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
473 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
474 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
475 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
476 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
477 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
478 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
480 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
481 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
482 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
483 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
484 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
485 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
486 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
487 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
488 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
489 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
490 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
491 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
492 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
493 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
494 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
495 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
497 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
498 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
499 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
500 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
501 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
502 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
503 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
504 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
505 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
506 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
507 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
508 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
509 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
510 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
511 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
512 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
514 { R_PARISC_TPREL64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
515 bfd_elf_generic_reloc
, "R_PARISC_TPREL64", FALSE
, 0, 0, FALSE
},
516 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
517 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
518 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
519 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
520 { R_PARISC_TPREL14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_dont
,
521 bfd_elf_generic_reloc
, "R_PARISC_TPREL14WR", FALSE
, 0, 0, FALSE
},
522 { R_PARISC_TPREL14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
523 bfd_elf_generic_reloc
, "R_PARISC_TPREL14DR", FALSE
, 0, 0, FALSE
},
524 { R_PARISC_TPREL16F
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
525 bfd_elf_generic_reloc
, "R_PARISC_TPREL16F", FALSE
, 0, 0, FALSE
},
526 { R_PARISC_TPREL16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_dont
,
527 bfd_elf_generic_reloc
, "R_PARISC_TPREL16WF", FALSE
, 0, 0, FALSE
},
528 { R_PARISC_TPREL16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
529 bfd_elf_generic_reloc
, "R_PARISC_TPREL16DF", FALSE
, 0, 0, FALSE
},
531 { R_PARISC_LTOFF_TP64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
532 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP64", FALSE
, 0, 0, FALSE
},
533 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
534 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
535 { R_PARISC_UNIMPLEMENTED
, 0, 0, 0, FALSE
, 0, complain_overflow_bitfield
,
536 bfd_elf_generic_reloc
, "R_PARISC_UNIMPLEMENTED", FALSE
, 0, 0, FALSE
},
537 { R_PARISC_LTOFF_TP14WR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
538 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14WR", FALSE
, 0, 0, FALSE
},
539 { R_PARISC_LTOFF_TP14DR
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
540 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP14DR", FALSE
, 0, 0, FALSE
},
541 { R_PARISC_LTOFF_TP16F
, 0, 2, 16, FALSE
, 0, complain_overflow_dont
,
542 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16F", FALSE
, 0, 0, FALSE
},
543 { R_PARISC_LTOFF_TP16WF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
544 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16WF", FALSE
, 0, 0, FALSE
},
545 { R_PARISC_LTOFF_TP16DF
, 0, 2, 16, FALSE
, 0, complain_overflow_bitfield
,
546 bfd_elf_generic_reloc
, "R_PARISC_LTOFF_TP16DF", FALSE
, 0, 0, FALSE
},
548 { R_PARISC_GNU_VTENTRY
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
549 bfd_elf_generic_reloc
, "R_PARISC_GNU_VTENTRY", FALSE
, 0, 0, FALSE
},
550 { R_PARISC_GNU_VTINHERIT
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
551 bfd_elf_generic_reloc
, "R_PARISC_GNU_VTINHERIT", FALSE
, 0, 0, FALSE
},
552 { R_PARISC_TLS_GD21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
553 bfd_elf_generic_reloc
, "R_PARISC_TLS_GD21L", FALSE
, 0, 0, FALSE
},
554 { R_PARISC_TLS_GD14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
555 bfd_elf_generic_reloc
, "R_PARISC_TLS_GD14R", FALSE
, 0, 0, FALSE
},
556 { R_PARISC_TLS_GDCALL
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
557 bfd_elf_generic_reloc
, "R_PARISC_TLS_GDCALL", FALSE
, 0, 0, FALSE
},
558 { R_PARISC_TLS_LDM21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
559 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDM21L", FALSE
, 0, 0, FALSE
},
560 { R_PARISC_TLS_LDM14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
561 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDM14R", FALSE
, 0, 0, FALSE
},
562 { R_PARISC_TLS_LDMCALL
, 0, 0, 0, FALSE
, 0, complain_overflow_dont
,
563 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDMCALL", FALSE
, 0, 0, FALSE
},
565 { R_PARISC_TLS_LDO21L
, 0, 2, 21, FALSE
, 0, complain_overflow_bitfield
,
566 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDO21L", FALSE
, 0, 0, FALSE
},
567 { R_PARISC_TLS_LDO14R
, 0, 2, 14, FALSE
, 0, complain_overflow_bitfield
,
568 bfd_elf_generic_reloc
, "R_PARISC_TLS_LDO14R", FALSE
, 0, 0, FALSE
},
569 { R_PARISC_TLS_DTPMOD32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
570 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPMOD32", FALSE
, 0, 0, FALSE
},
571 { R_PARISC_TLS_DTPMOD64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
572 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPMOD64", FALSE
, 0, 0, FALSE
},
573 { R_PARISC_TLS_DTPOFF32
, 0, 2, 32, FALSE
, 0, complain_overflow_bitfield
,
574 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPOFF32", FALSE
, 0, 0, FALSE
},
575 { R_PARISC_TLS_DTPOFF64
, 0, 4, 64, FALSE
, 0, complain_overflow_bitfield
,
576 bfd_elf_generic_reloc
, "R_PARISC_TLS_DTPOFF64", FALSE
, 0, 0, FALSE
},
579 #define OFFSET_14R_FROM_21L 4
580 #define OFFSET_14F_FROM_21L 5
582 /* Return the final relocation type for the given base type, instruction
583 format, and field selector. */
586 elf_hppa_reloc_final_type (bfd
*abfd
,
587 elf_hppa_reloc_type base_type
,
591 elf_hppa_reloc_type final_type
= base_type
;
593 /* Just a tangle of nested switch statements to deal with the braindamage
594 that a different field selector means a completely different relocation
598 /* We have been using generic relocation types. However, that may not
599 really make sense. Anyway, we need to support both R_PARISC_DIR64
600 and R_PARISC_DIR32 here. */
603 case R_HPPA_ABS_CALL
:
610 final_type
= R_PARISC_DIR14F
;
615 final_type
= R_PARISC_DIR14R
;
618 final_type
= R_PARISC_DLTIND14R
;
621 final_type
= R_PARISC_LTOFF_FPTR14DR
;
624 final_type
= R_PARISC_DLTIND14F
;
627 final_type
= R_PARISC_PLABEL14R
;
630 return R_PARISC_NONE
;
638 final_type
= R_PARISC_DIR17F
;
643 final_type
= R_PARISC_DIR17R
;
646 return R_PARISC_NONE
;
658 final_type
= R_PARISC_DIR21L
;
661 final_type
= R_PARISC_DLTIND21L
;
664 final_type
= R_PARISC_LTOFF_FPTR21L
;
667 final_type
= R_PARISC_PLABEL21L
;
670 return R_PARISC_NONE
;
678 final_type
= R_PARISC_DIR32
;
679 /* When in 64bit mode, a 32bit relocation is supposed to
680 be a section relative relocation. Dwarf2 (for example)
681 uses 32bit section relative relocations. */
682 if (bfd_arch_bits_per_address (abfd
) != 32)
683 final_type
= R_PARISC_SECREL32
;
686 final_type
= R_PARISC_PLABEL32
;
689 return R_PARISC_NONE
;
697 final_type
= R_PARISC_DIR64
;
700 final_type
= R_PARISC_FPTR64
;
703 return R_PARISC_NONE
;
708 return R_PARISC_NONE
;
721 /* R_PARISC_DLTREL14R for elf64, R_PARISC_DPREL14R for elf32. */
722 final_type
= base_type
+ OFFSET_14R_FROM_21L
;
725 /* R_PARISC_DLTREL14F for elf64, R_PARISC_DPREL14F for elf32. */
726 final_type
= base_type
+ OFFSET_14F_FROM_21L
;
729 return R_PARISC_NONE
;
741 /* R_PARISC_DLTREL21L for elf64, R_PARISC_DPREL21L for elf32. */
742 final_type
= base_type
;
745 return R_PARISC_NONE
;
753 final_type
= R_PARISC_GPREL64
;
756 return R_PARISC_NONE
;
761 return R_PARISC_NONE
;
765 case R_HPPA_PCREL_CALL
:
772 final_type
= R_PARISC_PCREL12F
;
775 return R_PARISC_NONE
;
780 /* Contrary to appearances, these are not calls of any sort.
781 Rather, they are loads/stores with a pcrel reloc. */
787 final_type
= R_PARISC_PCREL14R
;
790 if (bfd_get_mach (abfd
) < 25)
791 final_type
= R_PARISC_PCREL14F
;
793 final_type
= R_PARISC_PCREL16F
;
796 return R_PARISC_NONE
;
806 final_type
= R_PARISC_PCREL17R
;
809 final_type
= R_PARISC_PCREL17F
;
812 return R_PARISC_NONE
;
824 final_type
= R_PARISC_PCREL21L
;
827 return R_PARISC_NONE
;
835 final_type
= R_PARISC_PCREL22F
;
838 return R_PARISC_NONE
;
846 final_type
= R_PARISC_PCREL32
;
849 return R_PARISC_NONE
;
857 final_type
= R_PARISC_PCREL64
;
860 return R_PARISC_NONE
;
865 return R_PARISC_NONE
;
869 case R_PARISC_TLS_GD21L
:
874 final_type
= R_PARISC_TLS_GD21L
;
878 final_type
= R_PARISC_TLS_GD14R
;
881 return R_PARISC_NONE
;
885 case R_PARISC_TLS_LDM21L
:
890 final_type
= R_PARISC_TLS_LDM21L
;
894 final_type
= R_PARISC_TLS_LDM14R
;
897 return R_PARISC_NONE
;
901 case R_PARISC_TLS_LDO21L
:
905 final_type
= R_PARISC_TLS_LDO21L
;
908 final_type
= R_PARISC_TLS_LDO14R
;
911 return R_PARISC_NONE
;
915 case R_PARISC_TLS_IE21L
:
920 final_type
= R_PARISC_TLS_IE21L
;
924 final_type
= R_PARISC_TLS_IE14R
;
927 return R_PARISC_NONE
;
931 case R_PARISC_TLS_LE21L
:
935 final_type
= R_PARISC_TLS_LE21L
;
938 final_type
= R_PARISC_TLS_LE14R
;
941 return R_PARISC_NONE
;
945 case R_PARISC_SEGREL32
:
952 final_type
= R_PARISC_SEGREL32
;
955 return R_PARISC_NONE
;
963 final_type
= R_PARISC_SEGREL64
;
966 return R_PARISC_NONE
;
971 return R_PARISC_NONE
;
975 case R_PARISC_GNU_VTENTRY
:
976 case R_PARISC_GNU_VTINHERIT
:
977 case R_PARISC_SEGBASE
:
978 /* The defaults are fine for these cases. */
982 return R_PARISC_NONE
;
988 /* Return one (or more) BFD relocations which implement the base
989 relocation with modifications based on format and field. */
991 elf_hppa_reloc_type
**
992 _bfd_elf_hppa_gen_reloc_type (bfd
*abfd
,
993 elf_hppa_reloc_type base_type
,
996 int ignore ATTRIBUTE_UNUSED
,
997 asymbol
*sym ATTRIBUTE_UNUSED
)
999 elf_hppa_reloc_type
*finaltype
;
1000 elf_hppa_reloc_type
**final_types
;
1001 bfd_size_type amt
= sizeof (elf_hppa_reloc_type
*) * 2;
1003 /* Allocate slots for the BFD relocation. */
1004 final_types
= bfd_alloc (abfd
, amt
);
1005 if (final_types
== NULL
)
1008 /* Allocate space for the relocation itself. */
1009 amt
= sizeof (elf_hppa_reloc_type
);
1010 finaltype
= bfd_alloc (abfd
, amt
);
1011 if (finaltype
== NULL
)
1014 /* Some reasonable defaults. */
1015 final_types
[0] = finaltype
;
1016 final_types
[1] = NULL
;
1018 *finaltype
= elf_hppa_reloc_final_type (abfd
, base_type
, format
, field
);
1023 /* Translate from an elf into field into a howto relocation pointer. */
1026 elf_hppa_info_to_howto (bfd
*abfd ATTRIBUTE_UNUSED
,
1028 Elf_Internal_Rela
*elf_reloc
)
1030 BFD_ASSERT (ELF_R_TYPE (elf_reloc
->r_info
)
1031 < (unsigned int) R_PARISC_UNIMPLEMENTED
);
1032 bfd_reloc
->howto
= &elf_hppa_howto_table
[ELF_R_TYPE (elf_reloc
->r_info
)];
1035 /* Translate from an elf into field into a howto relocation pointer. */
1038 elf_hppa_info_to_howto_rel (bfd
*abfd ATTRIBUTE_UNUSED
,
1040 Elf_Internal_Rela
*elf_reloc
)
1042 BFD_ASSERT (ELF_R_TYPE (elf_reloc
->r_info
)
1043 < (unsigned int) R_PARISC_UNIMPLEMENTED
);
1044 bfd_reloc
->howto
= &elf_hppa_howto_table
[ELF_R_TYPE (elf_reloc
->r_info
)];
1047 /* Return the address of the howto table entry to perform the CODE
1048 relocation for an ARCH machine. */
1050 static reloc_howto_type
*
1051 elf_hppa_reloc_type_lookup (bfd
*abfd ATTRIBUTE_UNUSED
,
1052 bfd_reloc_code_real_type code
)
1054 if ((int) code
< (int) R_PARISC_UNIMPLEMENTED
)
1056 BFD_ASSERT ((int) elf_hppa_howto_table
[(int) code
].type
== (int) code
);
1057 return &elf_hppa_howto_table
[(int) code
];
1062 static reloc_howto_type
*
1063 elf_hppa_reloc_name_lookup (bfd
*abfd ATTRIBUTE_UNUSED
,
1069 i
< sizeof (elf_hppa_howto_table
) / sizeof (elf_hppa_howto_table
[0]);
1071 if (elf_hppa_howto_table
[i
].name
!= NULL
1072 && strcasecmp (elf_hppa_howto_table
[i
].name
, r_name
) == 0)
1073 return &elf_hppa_howto_table
[i
];
1078 /* Return TRUE if SYM represents a local label symbol. */
1081 elf_hppa_is_local_label_name (bfd
*abfd ATTRIBUTE_UNUSED
, const char *name
)
1083 if (name
[0] == 'L' && name
[1] == '$')
1085 return _bfd_elf_is_local_label_name (abfd
, name
);
1088 /* Set the correct type for an ELF section. We do this by the
1089 section name, which is a hack, but ought to work. */
1092 elf_hppa_fake_sections (bfd
*abfd
, Elf_Internal_Shdr
*hdr
, asection
*sec
)
1096 name
= bfd_get_section_name (abfd
, sec
);
1098 if (strcmp (name
, ".PARISC.unwind") == 0)
1104 hdr
->sh_type
= SHT_LOPROC
+ 1;
1108 /* ?!? How are unwinds supposed to work for symbols in arbitrary
1109 sections? Or what if we have multiple .text sections in a single
1110 .o file? HP really messed up on this one.
1112 Ugh. We can not use elf_section_data (sec)->this_idx at this
1113 point because it is not initialized yet.
1115 So we (gasp) recompute it here. Hopefully nobody ever changes the
1116 way sections are numbered in elf.c! */
1117 for (asec
= abfd
->sections
, indx
= 1; asec
; asec
= asec
->next
, indx
++)
1119 if (asec
->name
&& strcmp (asec
->name
, ".text") == 0)
1121 hdr
->sh_info
= indx
;
1126 /* I have no idea if this is really necessary or what it means. */
1127 hdr
->sh_entsize
= 4;
1133 elf_hppa_final_write_processing (bfd
*abfd
,
1134 bfd_boolean linker ATTRIBUTE_UNUSED
)
1136 int mach
= bfd_get_mach (abfd
);
1138 elf_elfheader (abfd
)->e_flags
&= ~(EF_PARISC_ARCH
| EF_PARISC_TRAPNIL
1139 | EF_PARISC_EXT
| EF_PARISC_LSB
1140 | EF_PARISC_WIDE
| EF_PARISC_NO_KABP
1141 | EF_PARISC_LAZYSWAP
);
1144 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_1_0
;
1145 else if (mach
== 11)
1146 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_1_1
;
1147 else if (mach
== 20)
1148 elf_elfheader (abfd
)->e_flags
|= EFA_PARISC_2_0
;
1149 else if (mach
== 25)
1150 elf_elfheader (abfd
)->e_flags
|= (EF_PARISC_WIDE
1152 /* The GNU tools have trapped without
1153 option since 1993, so need to take
1154 a step backwards with the ELF
1155 based toolchains. */
1156 | EF_PARISC_TRAPNIL
);
1159 /* Comparison function for qsort to sort unwind section during a
1163 hppa_unwind_entry_compare (const void *a
, const void *b
)
1165 const bfd_byte
*ap
, *bp
;
1166 unsigned long av
, bv
;
1169 av
= (unsigned long) ap
[0] << 24;
1170 av
|= (unsigned long) ap
[1] << 16;
1171 av
|= (unsigned long) ap
[2] << 8;
1172 av
|= (unsigned long) ap
[3];
1175 bv
= (unsigned long) bp
[0] << 24;
1176 bv
|= (unsigned long) bp
[1] << 16;
1177 bv
|= (unsigned long) bp
[2] << 8;
1178 bv
|= (unsigned long) bp
[3];
1180 return av
< bv
? -1 : av
> bv
? 1 : 0;
1184 elf_hppa_sort_unwind (bfd
*abfd
)
1188 /* Magic section names, but this is much safer than having
1189 relocate_section remember where SEGREL32 relocs occurred.
1190 Consider what happens if someone inept creates a linker script
1191 that puts unwind information in .text. */
1192 s
= bfd_get_section_by_name (abfd
, ".PARISC.unwind");
1198 if (!bfd_malloc_and_get_section (abfd
, s
, &contents
))
1202 qsort (contents
, (size_t) (size
/ 16), 16, hppa_unwind_entry_compare
);
1204 if (! bfd_set_section_contents (abfd
, s
, contents
, (file_ptr
) 0, size
))
1211 /* What to do when ld finds relocations against symbols defined in
1212 discarded sections. */
1215 elf_hppa_action_discarded (asection
*sec
)
1217 if (strcmp (".PARISC.unwind", sec
->name
) == 0)
1220 return _bfd_elf_default_action_discarded (sec
);