[PowerPC64] correct tprel offset limit
[external/binutils.git] / bfd / cpu-sparc.c
1 /* BFD support for the SPARC architecture.
2    Copyright (C) 1992-2019 Free Software Foundation, Inc.
3
4    This file is part of BFD, the Binary File Descriptor library.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20
21 #include "sysdep.h"
22 #include "bfd.h"
23 #include "libbfd.h"
24
25 static const bfd_arch_info_type arch_info_struct[] =
26 {
27   {
28     32, /* bits in a word */
29     32, /* bits in an address */
30     8,  /* bits in a byte */
31     bfd_arch_sparc,
32     bfd_mach_sparc_sparclet,
33     "sparc",
34     "sparc:sparclet",
35     3,
36     FALSE,
37     bfd_default_compatible,
38     bfd_default_scan,
39     bfd_arch_default_fill,
40     &arch_info_struct[1],
41   },
42   {
43     32, /* bits in a word */
44     32, /* bits in an address */
45     8,  /* bits in a byte */
46     bfd_arch_sparc,
47     bfd_mach_sparc_sparclite,
48     "sparc",
49     "sparc:sparclite",
50     3,
51     FALSE,
52     bfd_default_compatible,
53     bfd_default_scan,
54     bfd_arch_default_fill,
55     &arch_info_struct[2],
56   },
57   {
58     32, /* bits in a word */
59     32, /* bits in an address */
60     8,  /* bits in a byte */
61     bfd_arch_sparc,
62     bfd_mach_sparc_v8plus,
63     "sparc",
64     "sparc:v8plus",
65     3,
66     FALSE,
67     bfd_default_compatible,
68     bfd_default_scan,
69     bfd_arch_default_fill,
70     &arch_info_struct[3],
71   },
72   {
73     32, /* bits in a word */
74     32, /* bits in an address */
75     8,  /* bits in a byte */
76     bfd_arch_sparc,
77     bfd_mach_sparc_v8plusa,
78     "sparc",
79     "sparc:v8plusa",
80     3,
81     FALSE,
82     bfd_default_compatible,
83     bfd_default_scan,
84     bfd_arch_default_fill,
85     &arch_info_struct[4],
86   },
87   {
88     32, /* bits in a word */
89     32, /* bits in an address */
90     8,  /* bits in a byte */
91     bfd_arch_sparc,
92     bfd_mach_sparc_sparclite_le,
93     "sparc",
94     "sparc:sparclite_le",
95     3,
96     FALSE,
97     bfd_default_compatible,
98     bfd_default_scan,
99     bfd_arch_default_fill,
100     &arch_info_struct[5],
101   },
102   {
103     64, /* bits in a word */
104     64, /* bits in an address */
105     8,  /* bits in a byte */
106     bfd_arch_sparc,
107     bfd_mach_sparc_v9,
108     "sparc",
109     "sparc:v9",
110     3,
111     FALSE,
112     bfd_default_compatible,
113     bfd_default_scan,
114     bfd_arch_default_fill,
115     &arch_info_struct[6],
116   },
117   {
118     64, /* bits in a word */
119     64, /* bits in an address */
120     8,  /* bits in a byte */
121     bfd_arch_sparc,
122     bfd_mach_sparc_v9a,
123     "sparc",
124     "sparc:v9a",
125     3,
126     FALSE,
127     bfd_default_compatible,
128     bfd_default_scan,
129     bfd_arch_default_fill,
130     &arch_info_struct[7],
131   },
132   {
133     32, /* bits in a word */
134     32, /* bits in an address */
135     8,  /* bits in a byte */
136     bfd_arch_sparc,
137     bfd_mach_sparc_v8plusb,
138     "sparc",
139     "sparc:v8plusb",
140     3,
141     FALSE,
142     bfd_default_compatible,
143     bfd_default_scan,
144     bfd_arch_default_fill,
145     &arch_info_struct[8],
146   },
147   {
148     64, /* bits in a word */
149     64, /* bits in an address */
150     8,  /* bits in a byte */
151     bfd_arch_sparc,
152     bfd_mach_sparc_v9b,
153     "sparc",
154     "sparc:v9b",
155     3,
156     FALSE,
157     bfd_default_compatible,
158     bfd_default_scan,
159     bfd_arch_default_fill,
160     &arch_info_struct[9],
161   },
162   {
163     32, /* bits in a word */
164     32, /* bits in an address */
165     8,  /* bits in a byte */
166     bfd_arch_sparc,
167     bfd_mach_sparc_v8plusc,
168     "sparc",
169     "sparc:v8plusc",
170     3,
171     FALSE,
172     bfd_default_compatible,
173     bfd_default_scan,
174     bfd_arch_default_fill,
175     &arch_info_struct[10],
176   },
177   {
178     64, /* bits in a word */
179     64, /* bits in an address */
180     8,  /* bits in a byte */
181     bfd_arch_sparc,
182     bfd_mach_sparc_v9c,
183     "sparc",
184     "sparc:v9c",
185     3,
186     FALSE,
187     bfd_default_compatible,
188     bfd_default_scan,
189     bfd_arch_default_fill,
190     &arch_info_struct[11],
191   },
192   {
193     32, /* bits in a word */
194     32, /* bits in an address */
195     8,  /* bits in a byte */
196     bfd_arch_sparc,
197     bfd_mach_sparc_v8plusd,
198     "sparc",
199     "sparc:v8plusd",
200     3,
201     FALSE,
202     bfd_default_compatible,
203     bfd_default_scan,
204     bfd_arch_default_fill,
205     &arch_info_struct[12],
206   },
207   {
208     64, /* bits in a word */
209     64, /* bits in an address */
210     8,  /* bits in a byte */
211     bfd_arch_sparc,
212     bfd_mach_sparc_v9d,
213     "sparc",
214     "sparc:v9d",
215     3,
216     FALSE,
217     bfd_default_compatible,
218     bfd_default_scan,
219     bfd_arch_default_fill,
220     &arch_info_struct[13],
221   },
222   {
223     32, /* bits in a word */
224     32, /* bits in an address */
225     8,  /* bits in a byte */
226     bfd_arch_sparc,
227     bfd_mach_sparc_v8pluse,
228     "sparc",
229     "sparc:v8pluse",
230     3,
231     FALSE,
232     bfd_default_compatible,
233     bfd_default_scan,
234     bfd_arch_default_fill,
235     &arch_info_struct[14],
236   },
237   {
238     64, /* bits in a word */
239     64, /* bits in an address */
240     8,  /* bits in a byte */
241     bfd_arch_sparc,
242     bfd_mach_sparc_v9e,
243     "sparc",
244     "sparc:v9e",
245     3,
246     FALSE,
247     bfd_default_compatible,
248     bfd_default_scan,
249     bfd_arch_default_fill,
250     &arch_info_struct[15],
251   },
252   {
253     32, /* bits in a word */
254     32, /* bits in an address */
255     8,  /* bits in a byte */
256     bfd_arch_sparc,
257     bfd_mach_sparc_v8plusv,
258     "sparc",
259     "sparc:v8plusv",
260     3,
261     FALSE,
262     bfd_default_compatible,
263     bfd_default_scan,
264     bfd_arch_default_fill,
265     &arch_info_struct[16],
266   },
267   {
268     64, /* bits in a word */
269     64, /* bits in an address */
270     8,  /* bits in a byte */
271     bfd_arch_sparc,
272     bfd_mach_sparc_v9v,
273     "sparc",
274     "sparc:v9v",
275     3,
276     FALSE,
277     bfd_default_compatible,
278     bfd_default_scan,
279     bfd_arch_default_fill,
280     &arch_info_struct[17],
281   },
282   {
283     32, /* bits in a word */
284     32, /* bits in an address */
285     8,  /* bits in a byte */
286     bfd_arch_sparc,
287     bfd_mach_sparc_v8plusm,
288     "sparc",
289     "sparc:v8plusm",
290     3,
291     FALSE,
292     bfd_default_compatible,
293     bfd_default_scan,
294     bfd_arch_default_fill,
295     &arch_info_struct[18],
296   },
297   {
298     64, /* bits in a word */
299     64, /* bits in an address */
300     8,  /* bits in a byte */
301     bfd_arch_sparc,
302     bfd_mach_sparc_v9m,
303     "sparc",
304     "sparc:v9m",
305     3,
306     FALSE,
307     bfd_default_compatible,
308     bfd_default_scan,
309     bfd_arch_default_fill,
310     &arch_info_struct[19],
311   },
312   {
313     32, /* bits in a word */
314     32, /* bits in an address */
315     8,  /* bits in a byte */
316     bfd_arch_sparc,
317     bfd_mach_sparc_v8plusm8,
318     "sparc",
319     "sparc:v8plusm8",
320     3,
321     FALSE,
322     bfd_default_compatible,
323     bfd_default_scan,
324     bfd_arch_default_fill,
325     &arch_info_struct[20],
326   },
327   {
328     64, /* bits in a word */
329     64, /* bits in an address */
330     8,  /* bits in a byte */
331     bfd_arch_sparc,
332     bfd_mach_sparc_v9m8,
333     "sparc",
334     "sparc:v9m8",
335     3,
336     FALSE,
337     bfd_default_compatible,
338     bfd_default_scan,
339     bfd_arch_default_fill,
340     0,
341   }
342 };
343
344 const bfd_arch_info_type bfd_sparc_arch =
345   {
346     32, /* bits in a word */
347     32, /* bits in an address */
348     8,  /* bits in a byte */
349     bfd_arch_sparc,
350     bfd_mach_sparc,
351     "sparc",
352     "sparc",
353     3,
354     TRUE, /* the default */
355     bfd_default_compatible,
356     bfd_default_scan,
357     bfd_arch_default_fill,
358     &arch_info_struct[0],
359   };