1 |
/* BFD library support routines for architectures. |
/* BFD library support routines for architectures. |
2 |
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, |
3 |
2000, 2001, 2002 |
2000, 2001, 2002, 2003, 2004, 2005 |
4 |
Free Software Foundation, Inc. |
Free Software Foundation, Inc. |
5 |
Hacked by John Gilmore and Steve Chamberlain of Cygnus Support. |
Hacked by John Gilmore and Steve Chamberlain of Cygnus Support. |
6 |
|
|
7 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
8 |
|
|
9 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
10 |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
11 |
the Free Software Foundation; either version 2 of the License, or |
the Free Software Foundation; either version 2 of the License, or |
12 |
(at your option) any later version. |
(at your option) any later version. |
13 |
|
|
14 |
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
15 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 |
GNU General Public License for more details. |
GNU General Public License for more details. |
18 |
|
|
19 |
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
20 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
21 |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
22 |
|
|
23 |
#include "bfd.h" |
#include "bfd.h" |
24 |
#include "sysdep.h" |
#include "sysdep.h" |
84 |
.#define bfd_mach_mcf5206e 10 |
.#define bfd_mach_mcf5206e 10 |
85 |
.#define bfd_mach_mcf5307 11 |
.#define bfd_mach_mcf5307 11 |
86 |
.#define bfd_mach_mcf5407 12 |
.#define bfd_mach_mcf5407 12 |
87 |
|
.#define bfd_mach_mcf528x 13 |
88 |
|
.#define bfd_mach_mcfv4e 14 |
89 |
|
.#define bfd_mach_mcf521x 15 |
90 |
|
.#define bfd_mach_mcf5249 16 |
91 |
|
.#define bfd_mach_mcf547x 17 |
92 |
|
.#define bfd_mach_mcf548x 18 |
93 |
. bfd_arch_vax, {* DEC Vax *} |
. bfd_arch_vax, {* DEC Vax *} |
94 |
. bfd_arch_i960, {* Intel 960 *} |
. bfd_arch_i960, {* Intel 960 *} |
95 |
. {* The order of the following is important. |
. {* The order of the following is important. |
128 |
.#define bfd_mach_sparc_v9_p(mach) \ |
.#define bfd_mach_sparc_v9_p(mach) \ |
129 |
. ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ |
. ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ |
130 |
. && (mach) != bfd_mach_sparc_sparclite_le) |
. && (mach) != bfd_mach_sparc_sparclite_le) |
131 |
|
.{* Nonzero if MACH is a 64 bit sparc architecture. *} |
132 |
|
.#define bfd_mach_sparc_64bit_p(mach) \ |
133 |
|
. ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb) |
134 |
. bfd_arch_mips, {* MIPS Rxxxx *} |
. bfd_arch_mips, {* MIPS Rxxxx *} |
135 |
.#define bfd_mach_mips3000 3000 |
.#define bfd_mach_mips3000 3000 |
136 |
.#define bfd_mach_mips3900 3900 |
.#define bfd_mach_mips3900 3900 |
138 |
.#define bfd_mach_mips4010 4010 |
.#define bfd_mach_mips4010 4010 |
139 |
.#define bfd_mach_mips4100 4100 |
.#define bfd_mach_mips4100 4100 |
140 |
.#define bfd_mach_mips4111 4111 |
.#define bfd_mach_mips4111 4111 |
141 |
|
.#define bfd_mach_mips4120 4120 |
142 |
.#define bfd_mach_mips4300 4300 |
.#define bfd_mach_mips4300 4300 |
143 |
.#define bfd_mach_mips4400 4400 |
.#define bfd_mach_mips4400 4400 |
144 |
.#define bfd_mach_mips4600 4600 |
.#define bfd_mach_mips4600 4600 |
145 |
.#define bfd_mach_mips4650 4650 |
.#define bfd_mach_mips4650 4650 |
146 |
.#define bfd_mach_mips5000 5000 |
.#define bfd_mach_mips5000 5000 |
147 |
|
.#define bfd_mach_mips5400 5400 |
148 |
|
.#define bfd_mach_mips5500 5500 |
149 |
.#define bfd_mach_mips6000 6000 |
.#define bfd_mach_mips6000 6000 |
150 |
|
.#define bfd_mach_mips7000 7000 |
151 |
.#define bfd_mach_mips8000 8000 |
.#define bfd_mach_mips8000 8000 |
152 |
|
.#define bfd_mach_mips9000 9000 |
153 |
.#define bfd_mach_mips10000 10000 |
.#define bfd_mach_mips10000 10000 |
154 |
.#define bfd_mach_mips12000 12000 |
.#define bfd_mach_mips12000 12000 |
155 |
.#define bfd_mach_mips16 16 |
.#define bfd_mach_mips16 16 |
156 |
.#define bfd_mach_mips5 5 |
.#define bfd_mach_mips5 5 |
157 |
.#define bfd_mach_mips_sb1 12310201 {* octal 'SB', 01 *} |
.#define bfd_mach_mips_sb1 12310201 {* octal 'SB', 01 *} |
158 |
.#define bfd_mach_mipsisa32 32 |
.#define bfd_mach_mipsisa32 32 |
159 |
|
.#define bfd_mach_mipsisa32r2 33 |
160 |
.#define bfd_mach_mipsisa64 64 |
.#define bfd_mach_mipsisa64 64 |
161 |
|
.#define bfd_mach_mipsisa64r2 65 |
162 |
. bfd_arch_i386, {* Intel 386 *} |
. bfd_arch_i386, {* Intel 386 *} |
163 |
.#define bfd_mach_i386_i386 0 |
.#define bfd_mach_i386_i386 1 |
164 |
.#define bfd_mach_i386_i8086 1 |
.#define bfd_mach_i386_i8086 2 |
165 |
.#define bfd_mach_i386_i386_intel_syntax 2 |
.#define bfd_mach_i386_i386_intel_syntax 3 |
166 |
.#define bfd_mach_x86_64 3 |
.#define bfd_mach_x86_64 64 |
167 |
.#define bfd_mach_x86_64_intel_syntax 4 |
.#define bfd_mach_x86_64_intel_syntax 65 |
168 |
. bfd_arch_we32k, {* AT&T WE32xxx *} |
. bfd_arch_we32k, {* AT&T WE32xxx *} |
169 |
. bfd_arch_tahoe, {* CCI/Harris Tahoe *} |
. bfd_arch_tahoe, {* CCI/Harris Tahoe *} |
170 |
. bfd_arch_i860, {* Intel 860 *} |
. bfd_arch_i860, {* Intel 860 *} |
173 |
. bfd_arch_alliant, {* Alliant *} |
. bfd_arch_alliant, {* Alliant *} |
174 |
. bfd_arch_convex, {* Convex *} |
. bfd_arch_convex, {* Convex *} |
175 |
. bfd_arch_m88k, {* Motorola 88xxx *} |
. bfd_arch_m88k, {* Motorola 88xxx *} |
176 |
|
. bfd_arch_m98k, {* Motorola 98xxx *} |
177 |
. bfd_arch_pyramid, {* Pyramid Technology *} |
. bfd_arch_pyramid, {* Pyramid Technology *} |
178 |
. bfd_arch_h8300, {* Hitachi H8/300 *} |
. bfd_arch_h8300, {* Renesas H8/300 (formerly Hitachi H8/300) *} |
179 |
.#define bfd_mach_h8300 1 |
.#define bfd_mach_h8300 1 |
180 |
.#define bfd_mach_h8300h 2 |
.#define bfd_mach_h8300h 2 |
181 |
.#define bfd_mach_h8300s 3 |
.#define bfd_mach_h8300s 3 |
182 |
|
.#define bfd_mach_h8300hn 4 |
183 |
|
.#define bfd_mach_h8300sn 5 |
184 |
|
.#define bfd_mach_h8300sx 6 |
185 |
|
.#define bfd_mach_h8300sxn 7 |
186 |
. bfd_arch_pdp11, {* DEC PDP-11 *} |
. bfd_arch_pdp11, {* DEC PDP-11 *} |
187 |
. bfd_arch_powerpc, {* PowerPC *} |
. bfd_arch_powerpc, {* PowerPC *} |
188 |
.#define bfd_mach_ppc 0 |
.#define bfd_mach_ppc 32 |
189 |
.#define bfd_mach_ppc64 1 |
.#define bfd_mach_ppc64 64 |
190 |
.#define bfd_mach_ppc_403 403 |
.#define bfd_mach_ppc_403 403 |
191 |
.#define bfd_mach_ppc_403gc 4030 |
.#define bfd_mach_ppc_403gc 4030 |
192 |
.#define bfd_mach_ppc_505 505 |
.#define bfd_mach_ppc_505 505 |
203 |
.#define bfd_mach_ppc_rs64ii 642 |
.#define bfd_mach_ppc_rs64ii 642 |
204 |
.#define bfd_mach_ppc_rs64iii 643 |
.#define bfd_mach_ppc_rs64iii 643 |
205 |
.#define bfd_mach_ppc_7400 7400 |
.#define bfd_mach_ppc_7400 7400 |
206 |
|
.#define bfd_mach_ppc_e500 500 |
207 |
. bfd_arch_rs6000, {* IBM RS/6000 *} |
. bfd_arch_rs6000, {* IBM RS/6000 *} |
208 |
.#define bfd_mach_rs6k 0 |
.#define bfd_mach_rs6k 6000 |
209 |
.#define bfd_mach_rs6k_rs1 6001 |
.#define bfd_mach_rs6k_rs1 6001 |
210 |
.#define bfd_mach_rs6k_rsc 6003 |
.#define bfd_mach_rs6k_rsc 6003 |
211 |
.#define bfd_mach_rs6k_rs2 6002 |
.#define bfd_mach_rs6k_rs2 6002 |
212 |
. bfd_arch_hppa, {* HP PA RISC *} |
. bfd_arch_hppa, {* HP PA RISC *} |
213 |
|
.#define bfd_mach_hppa10 10 |
214 |
|
.#define bfd_mach_hppa11 11 |
215 |
|
.#define bfd_mach_hppa20 20 |
216 |
|
.#define bfd_mach_hppa20w 25 |
217 |
. bfd_arch_d10v, {* Mitsubishi D10V *} |
. bfd_arch_d10v, {* Mitsubishi D10V *} |
218 |
.#define bfd_mach_d10v 0 |
.#define bfd_mach_d10v 1 |
219 |
.#define bfd_mach_d10v_ts2 2 |
.#define bfd_mach_d10v_ts2 2 |
220 |
.#define bfd_mach_d10v_ts3 3 |
.#define bfd_mach_d10v_ts3 3 |
221 |
. bfd_arch_d30v, {* Mitsubishi D30V *} |
. bfd_arch_d30v, {* Mitsubishi D30V *} |
222 |
. bfd_arch_dlx, {* DLX *} |
. bfd_arch_dlx, {* DLX *} |
223 |
. bfd_arch_m68hc11, {* Motorola 68HC11 *} |
. bfd_arch_m68hc11, {* Motorola 68HC11 *} |
224 |
. bfd_arch_m68hc12, {* Motorola 68HC12 *} |
. bfd_arch_m68hc12, {* Motorola 68HC12 *} |
225 |
|
.#define bfd_mach_m6812_default 0 |
226 |
|
.#define bfd_mach_m6812 1 |
227 |
|
.#define bfd_mach_m6812s 2 |
228 |
. bfd_arch_z8k, {* Zilog Z8000 *} |
. bfd_arch_z8k, {* Zilog Z8000 *} |
229 |
.#define bfd_mach_z8001 1 |
.#define bfd_mach_z8001 1 |
230 |
.#define bfd_mach_z8002 2 |
.#define bfd_mach_z8002 2 |
231 |
. bfd_arch_h8500, {* Hitachi H8/500 *} |
. bfd_arch_h8500, {* Renesas H8/500 (formerly Hitachi H8/500) *} |
232 |
. bfd_arch_sh, {* Hitachi SH *} |
. bfd_arch_sh, {* Renesas / SuperH SH (formerly Hitachi SH) *} |
233 |
.#define bfd_mach_sh 0 |
.#define bfd_mach_sh 1 |
234 |
.#define bfd_mach_sh2 0x20 |
.#define bfd_mach_sh2 0x20 |
235 |
.#define bfd_mach_sh_dsp 0x2d |
.#define bfd_mach_sh_dsp 0x2d |
236 |
|
.#define bfd_mach_sh2a 0x2a |
237 |
|
.#define bfd_mach_sh2a_nofpu 0x2b |
238 |
|
.#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1 |
239 |
|
.#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2 |
240 |
|
.#define bfd_mach_sh2a_or_sh4 0x2a3 |
241 |
|
.#define bfd_mach_sh2a_or_sh3e 0x2a4 |
242 |
|
.#define bfd_mach_sh2e 0x2e |
243 |
.#define bfd_mach_sh3 0x30 |
.#define bfd_mach_sh3 0x30 |
244 |
|
.#define bfd_mach_sh3_nommu 0x31 |
245 |
.#define bfd_mach_sh3_dsp 0x3d |
.#define bfd_mach_sh3_dsp 0x3d |
246 |
.#define bfd_mach_sh3e 0x3e |
.#define bfd_mach_sh3e 0x3e |
247 |
.#define bfd_mach_sh4 0x40 |
.#define bfd_mach_sh4 0x40 |
248 |
|
.#define bfd_mach_sh4_nofpu 0x41 |
249 |
|
.#define bfd_mach_sh4_nommu_nofpu 0x42 |
250 |
|
.#define bfd_mach_sh4a 0x4a |
251 |
|
.#define bfd_mach_sh4a_nofpu 0x4b |
252 |
|
.#define bfd_mach_sh4al_dsp 0x4d |
253 |
.#define bfd_mach_sh5 0x50 |
.#define bfd_mach_sh5 0x50 |
254 |
. bfd_arch_alpha, {* Dec Alpha *} |
. bfd_arch_alpha, {* Dec Alpha *} |
255 |
.#define bfd_mach_alpha_ev4 0x10 |
.#define bfd_mach_alpha_ev4 0x10 |
256 |
.#define bfd_mach_alpha_ev5 0x20 |
.#define bfd_mach_alpha_ev5 0x20 |
257 |
.#define bfd_mach_alpha_ev6 0x30 |
.#define bfd_mach_alpha_ev6 0x30 |
258 |
. bfd_arch_arm, {* Advanced Risc Machines ARM. *} |
. bfd_arch_arm, {* Advanced Risc Machines ARM. *} |
259 |
|
.#define bfd_mach_arm_unknown 0 |
260 |
.#define bfd_mach_arm_2 1 |
.#define bfd_mach_arm_2 1 |
261 |
.#define bfd_mach_arm_2a 2 |
.#define bfd_mach_arm_2a 2 |
262 |
.#define bfd_mach_arm_3 3 |
.#define bfd_mach_arm_3 3 |
267 |
.#define bfd_mach_arm_5T 8 |
.#define bfd_mach_arm_5T 8 |
268 |
.#define bfd_mach_arm_5TE 9 |
.#define bfd_mach_arm_5TE 9 |
269 |
.#define bfd_mach_arm_XScale 10 |
.#define bfd_mach_arm_XScale 10 |
270 |
|
.#define bfd_mach_arm_ep9312 11 |
271 |
|
.#define bfd_mach_arm_iWMMXt 12 |
272 |
. bfd_arch_ns32k, {* National Semiconductors ns32000 *} |
. bfd_arch_ns32k, {* National Semiconductors ns32000 *} |
273 |
. bfd_arch_w65, {* WDC 65816 *} |
. bfd_arch_w65, {* WDC 65816 *} |
274 |
. bfd_arch_tic30, {* Texas Instruments TMS320C30 *} |
. bfd_arch_tic30, {* Texas Instruments TMS320C30 *} |
275 |
|
. bfd_arch_tic4x, {* Texas Instruments TMS320C3X/4X *} |
276 |
|
.#define bfd_mach_tic3x 30 |
277 |
|
.#define bfd_mach_tic4x 40 |
278 |
. bfd_arch_tic54x, {* Texas Instruments TMS320C54X *} |
. bfd_arch_tic54x, {* Texas Instruments TMS320C54X *} |
279 |
. bfd_arch_tic80, {* TI TMS320c80 (MVP) *} |
. bfd_arch_tic80, {* TI TMS320c80 (MVP) *} |
280 |
. bfd_arch_v850, {* NEC V850 *} |
. bfd_arch_v850, {* NEC V850 *} |
281 |
.#define bfd_mach_v850 0 |
.#define bfd_mach_v850 1 |
282 |
.#define bfd_mach_v850e 'E' |
.#define bfd_mach_v850e 'E' |
283 |
.#define bfd_mach_v850ea 'A' |
.#define bfd_mach_v850e1 '1' |
284 |
. bfd_arch_arc, {* ARC Cores *} |
. bfd_arch_arc, {* ARC Cores *} |
285 |
.#define bfd_mach_arc_5 0 |
.#define bfd_mach_arc_5 5 |
286 |
.#define bfd_mach_arc_6 1 |
.#define bfd_mach_arc_6 6 |
287 |
.#define bfd_mach_arc_7 2 |
.#define bfd_mach_arc_7 7 |
288 |
.#define bfd_mach_arc_8 3 |
.#define bfd_mach_arc_8 8 |
289 |
. bfd_arch_m32r, {* Mitsubishi M32R/D *} |
. bfd_arch_m32r, {* Renesas M32R (formerly Mitsubishi M32R/D) *} |
290 |
.#define bfd_mach_m32r 0 {* For backwards compatibility. *} |
.#define bfd_mach_m32r 1 {* For backwards compatibility. *} |
291 |
.#define bfd_mach_m32rx 'x' |
.#define bfd_mach_m32rx 'x' |
292 |
|
.#define bfd_mach_m32r2 '2' |
293 |
. bfd_arch_mn10200, {* Matsushita MN10200 *} |
. bfd_arch_mn10200, {* Matsushita MN10200 *} |
294 |
. bfd_arch_mn10300, {* Matsushita MN10300 *} |
. bfd_arch_mn10300, {* Matsushita MN10300 *} |
295 |
.#define bfd_mach_mn10300 300 |
.#define bfd_mach_mn10300 300 |
296 |
.#define bfd_mach_am33 330 |
.#define bfd_mach_am33 330 |
297 |
|
.#define bfd_mach_am33_2 332 |
298 |
. bfd_arch_fr30, |
. bfd_arch_fr30, |
299 |
.#define bfd_mach_fr30 0x46523330 |
.#define bfd_mach_fr30 0x46523330 |
300 |
. bfd_arch_frv, |
. bfd_arch_frv, |
301 |
.#define bfd_mach_frv 0 |
.#define bfd_mach_frv 1 |
302 |
.#define bfd_mach_frvsimple 1 |
.#define bfd_mach_frvsimple 2 |
303 |
.#define bfd_mach_fr300 300 |
.#define bfd_mach_fr300 300 |
304 |
.#define bfd_mach_fr400 400 |
.#define bfd_mach_fr400 400 |
305 |
|
.#define bfd_mach_fr450 450 |
306 |
.#define bfd_mach_frvtomcat 499 {* fr500 prototype *} |
.#define bfd_mach_frvtomcat 499 {* fr500 prototype *} |
307 |
.#define bfd_mach_fr500 500 |
.#define bfd_mach_fr500 500 |
308 |
|
.#define bfd_mach_fr550 550 |
309 |
. bfd_arch_mcore, |
. bfd_arch_mcore, |
310 |
. bfd_arch_ia64, {* HP/Intel ia64 *} |
. bfd_arch_ia64, {* HP/Intel ia64 *} |
311 |
.#define bfd_mach_ia64_elf64 0 |
.#define bfd_mach_ia64_elf64 64 |
312 |
.#define bfd_mach_ia64_elf32 1 |
.#define bfd_mach_ia64_elf32 32 |
313 |
. bfd_arch_ip2k, {* Ubicom IP2K microcontrollers. *} |
. bfd_arch_ip2k, {* Ubicom IP2K microcontrollers. *} |
314 |
.#define bfd_mach_ip2022 0 |
.#define bfd_mach_ip2022 1 |
315 |
.#define bfd_mach_ip2022ext 1 |
.#define bfd_mach_ip2022ext 2 |
316 |
|
. bfd_arch_iq2000, {* Vitesse IQ2000. *} |
317 |
|
.#define bfd_mach_iq2000 1 |
318 |
|
.#define bfd_mach_iq10 2 |
319 |
. bfd_arch_pj, |
. bfd_arch_pj, |
320 |
. bfd_arch_avr, {* Atmel AVR microcontrollers. *} |
. bfd_arch_avr, {* Atmel AVR microcontrollers. *} |
321 |
.#define bfd_mach_avr1 1 |
.#define bfd_mach_avr1 1 |
323 |
.#define bfd_mach_avr3 3 |
.#define bfd_mach_avr3 3 |
324 |
.#define bfd_mach_avr4 4 |
.#define bfd_mach_avr4 4 |
325 |
.#define bfd_mach_avr5 5 |
.#define bfd_mach_avr5 5 |
326 |
|
. bfd_arch_cr16c, {* National Semiconductor CompactRISC. *} |
327 |
|
.#define bfd_mach_cr16c 1 |
328 |
|
. bfd_arch_crx, {* National Semiconductor CRX. *} |
329 |
|
.#define bfd_mach_crx 1 |
330 |
. bfd_arch_cris, {* Axis CRIS *} |
. bfd_arch_cris, {* Axis CRIS *} |
331 |
|
.#define bfd_mach_cris_v0_v10 255 |
332 |
|
.#define bfd_mach_cris_v32 32 |
333 |
|
.#define bfd_mach_cris_v10_v32 1032 |
334 |
. bfd_arch_s390, {* IBM s390 *} |
. bfd_arch_s390, {* IBM s390 *} |
335 |
.#define bfd_mach_s390_31 0 |
.#define bfd_mach_s390_31 31 |
336 |
.#define bfd_mach_s390_64 1 |
.#define bfd_mach_s390_64 64 |
337 |
. bfd_arch_openrisc, {* OpenRISC *} |
. bfd_arch_openrisc, {* OpenRISC *} |
338 |
. bfd_arch_mmix, {* Donald Knuth's educational processor. *} |
. bfd_arch_mmix, {* Donald Knuth's educational processor. *} |
339 |
. bfd_arch_xstormy16, |
. bfd_arch_xstormy16, |
340 |
.#define bfd_mach_xstormy16 0 |
.#define bfd_mach_xstormy16 1 |
341 |
|
. bfd_arch_msp430, {* Texas Instruments MSP430 architecture. *} |
342 |
|
.#define bfd_mach_msp11 11 |
343 |
|
.#define bfd_mach_msp110 110 |
344 |
|
.#define bfd_mach_msp12 12 |
345 |
|
.#define bfd_mach_msp13 13 |
346 |
|
.#define bfd_mach_msp14 14 |
347 |
|
.#define bfd_mach_msp15 15 |
348 |
|
.#define bfd_mach_msp16 16 |
349 |
|
.#define bfd_mach_msp31 31 |
350 |
|
.#define bfd_mach_msp32 32 |
351 |
|
.#define bfd_mach_msp33 33 |
352 |
|
.#define bfd_mach_msp41 41 |
353 |
|
.#define bfd_mach_msp42 42 |
354 |
|
.#define bfd_mach_msp43 43 |
355 |
|
.#define bfd_mach_msp44 44 |
356 |
|
. bfd_arch_xtensa, {* Tensilica's Xtensa cores. *} |
357 |
|
.#define bfd_mach_xtensa 1 |
358 |
|
. bfd_arch_maxq, {* Dallas MAXQ 10/20 *} |
359 |
|
.#define bfd_mach_maxq10 10 |
360 |
|
.#define bfd_mach_maxq20 20 |
361 |
. bfd_arch_last |
. bfd_arch_last |
362 |
. }; |
. }; |
363 |
*/ |
*/ |
381 |
. const char *arch_name; |
. const char *arch_name; |
382 |
. const char *printable_name; |
. const char *printable_name; |
383 |
. unsigned int section_align_power; |
. unsigned int section_align_power; |
384 |
. {* True if this is the default machine for the architecture. |
. {* TRUE if this is the default machine for the architecture. |
385 |
. The default arch should be the first entry for an arch so that |
. The default arch should be the first entry for an arch so that |
386 |
. all the entries for that arch can be accessed via <<next>>. *} |
. all the entries for that arch can be accessed via <<next>>. *} |
387 |
. boolean the_default; |
. bfd_boolean the_default; |
388 |
. const struct bfd_arch_info * (*compatible) |
. const struct bfd_arch_info * (*compatible) |
389 |
. PARAMS ((const struct bfd_arch_info *a, |
. (const struct bfd_arch_info *a, const struct bfd_arch_info *b); |
|
. const struct bfd_arch_info *b)); |
|
390 |
. |
. |
391 |
. boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); |
. bfd_boolean (*scan) (const struct bfd_arch_info *, const char *); |
392 |
. |
. |
393 |
. const struct bfd_arch_info *next; |
. const struct bfd_arch_info *next; |
394 |
.} |
.} |
401 |
extern const bfd_arch_info_type bfd_arc_arch; |
extern const bfd_arch_info_type bfd_arc_arch; |
402 |
extern const bfd_arch_info_type bfd_arm_arch; |
extern const bfd_arch_info_type bfd_arm_arch; |
403 |
extern const bfd_arch_info_type bfd_avr_arch; |
extern const bfd_arch_info_type bfd_avr_arch; |
404 |
|
extern const bfd_arch_info_type bfd_cr16c_arch; |
405 |
extern const bfd_arch_info_type bfd_cris_arch; |
extern const bfd_arch_info_type bfd_cris_arch; |
406 |
|
extern const bfd_arch_info_type bfd_crx_arch; |
407 |
extern const bfd_arch_info_type bfd_d10v_arch; |
extern const bfd_arch_info_type bfd_d10v_arch; |
408 |
extern const bfd_arch_info_type bfd_d30v_arch; |
extern const bfd_arch_info_type bfd_d30v_arch; |
409 |
extern const bfd_arch_info_type bfd_dlx_arch; |
extern const bfd_arch_info_type bfd_dlx_arch; |
418 |
extern const bfd_arch_info_type bfd_i960_arch; |
extern const bfd_arch_info_type bfd_i960_arch; |
419 |
extern const bfd_arch_info_type bfd_ia64_arch; |
extern const bfd_arch_info_type bfd_ia64_arch; |
420 |
extern const bfd_arch_info_type bfd_ip2k_arch; |
extern const bfd_arch_info_type bfd_ip2k_arch; |
421 |
|
extern const bfd_arch_info_type bfd_iq2000_arch; |
422 |
extern const bfd_arch_info_type bfd_m32r_arch; |
extern const bfd_arch_info_type bfd_m32r_arch; |
423 |
extern const bfd_arch_info_type bfd_m68hc11_arch; |
extern const bfd_arch_info_type bfd_m68hc11_arch; |
424 |
extern const bfd_arch_info_type bfd_m68hc12_arch; |
extern const bfd_arch_info_type bfd_m68hc12_arch; |
425 |
extern const bfd_arch_info_type bfd_m68k_arch; |
extern const bfd_arch_info_type bfd_m68k_arch; |
426 |
extern const bfd_arch_info_type bfd_m88k_arch; |
extern const bfd_arch_info_type bfd_m88k_arch; |
427 |
|
extern const bfd_arch_info_type bfd_maxq_arch; |
428 |
extern const bfd_arch_info_type bfd_mcore_arch; |
extern const bfd_arch_info_type bfd_mcore_arch; |
429 |
extern const bfd_arch_info_type bfd_mips_arch; |
extern const bfd_arch_info_type bfd_mips_arch; |
430 |
extern const bfd_arch_info_type bfd_mmix_arch; |
extern const bfd_arch_info_type bfd_mmix_arch; |
431 |
extern const bfd_arch_info_type bfd_mn10200_arch; |
extern const bfd_arch_info_type bfd_mn10200_arch; |
432 |
extern const bfd_arch_info_type bfd_mn10300_arch; |
extern const bfd_arch_info_type bfd_mn10300_arch; |
433 |
|
extern const bfd_arch_info_type bfd_msp430_arch; |
434 |
extern const bfd_arch_info_type bfd_ns32k_arch; |
extern const bfd_arch_info_type bfd_ns32k_arch; |
435 |
extern const bfd_arch_info_type bfd_openrisc_arch; |
extern const bfd_arch_info_type bfd_openrisc_arch; |
436 |
extern const bfd_arch_info_type bfd_or32_arch; |
extern const bfd_arch_info_type bfd_or32_arch; |
443 |
extern const bfd_arch_info_type bfd_sh_arch; |
extern const bfd_arch_info_type bfd_sh_arch; |
444 |
extern const bfd_arch_info_type bfd_sparc_arch; |
extern const bfd_arch_info_type bfd_sparc_arch; |
445 |
extern const bfd_arch_info_type bfd_tic30_arch; |
extern const bfd_arch_info_type bfd_tic30_arch; |
446 |
|
extern const bfd_arch_info_type bfd_tic4x_arch; |
447 |
extern const bfd_arch_info_type bfd_tic54x_arch; |
extern const bfd_arch_info_type bfd_tic54x_arch; |
448 |
extern const bfd_arch_info_type bfd_tic80_arch; |
extern const bfd_arch_info_type bfd_tic80_arch; |
449 |
extern const bfd_arch_info_type bfd_v850_arch; |
extern const bfd_arch_info_type bfd_v850_arch; |
451 |
extern const bfd_arch_info_type bfd_we32k_arch; |
extern const bfd_arch_info_type bfd_we32k_arch; |
452 |
extern const bfd_arch_info_type bfd_w65_arch; |
extern const bfd_arch_info_type bfd_w65_arch; |
453 |
extern const bfd_arch_info_type bfd_xstormy16_arch; |
extern const bfd_arch_info_type bfd_xstormy16_arch; |
454 |
|
extern const bfd_arch_info_type bfd_xtensa_arch; |
455 |
extern const bfd_arch_info_type bfd_z8k_arch; |
extern const bfd_arch_info_type bfd_z8k_arch; |
456 |
|
|
457 |
static const bfd_arch_info_type * const bfd_archures_list[] = |
static const bfd_arch_info_type * const bfd_archures_list[] = |
464 |
&bfd_arc_arch, |
&bfd_arc_arch, |
465 |
&bfd_arm_arch, |
&bfd_arm_arch, |
466 |
&bfd_avr_arch, |
&bfd_avr_arch, |
467 |
|
&bfd_cr16c_arch, |
468 |
&bfd_cris_arch, |
&bfd_cris_arch, |
469 |
|
&bfd_crx_arch, |
470 |
&bfd_d10v_arch, |
&bfd_d10v_arch, |
471 |
&bfd_d30v_arch, |
&bfd_d30v_arch, |
472 |
&bfd_dlx_arch, |
&bfd_dlx_arch, |
481 |
&bfd_i960_arch, |
&bfd_i960_arch, |
482 |
&bfd_ia64_arch, |
&bfd_ia64_arch, |
483 |
&bfd_ip2k_arch, |
&bfd_ip2k_arch, |
484 |
|
&bfd_iq2000_arch, |
485 |
&bfd_m32r_arch, |
&bfd_m32r_arch, |
486 |
&bfd_m68hc11_arch, |
&bfd_m68hc11_arch, |
487 |
&bfd_m68hc12_arch, |
&bfd_m68hc12_arch, |
488 |
&bfd_m68k_arch, |
&bfd_m68k_arch, |
489 |
&bfd_m88k_arch, |
&bfd_m88k_arch, |
490 |
|
&bfd_maxq_arch, |
491 |
&bfd_mcore_arch, |
&bfd_mcore_arch, |
492 |
&bfd_mips_arch, |
&bfd_mips_arch, |
493 |
&bfd_mmix_arch, |
&bfd_mmix_arch, |
494 |
&bfd_mn10200_arch, |
&bfd_mn10200_arch, |
495 |
&bfd_mn10300_arch, |
&bfd_mn10300_arch, |
496 |
|
&bfd_msp430_arch, |
497 |
&bfd_ns32k_arch, |
&bfd_ns32k_arch, |
498 |
&bfd_openrisc_arch, |
&bfd_openrisc_arch, |
499 |
&bfd_or32_arch, |
&bfd_or32_arch, |
504 |
&bfd_sh_arch, |
&bfd_sh_arch, |
505 |
&bfd_sparc_arch, |
&bfd_sparc_arch, |
506 |
&bfd_tic30_arch, |
&bfd_tic30_arch, |
507 |
|
&bfd_tic4x_arch, |
508 |
&bfd_tic54x_arch, |
&bfd_tic54x_arch, |
509 |
&bfd_tic80_arch, |
&bfd_tic80_arch, |
510 |
&bfd_v850_arch, |
&bfd_v850_arch, |
512 |
&bfd_w65_arch, |
&bfd_w65_arch, |
513 |
&bfd_we32k_arch, |
&bfd_we32k_arch, |
514 |
&bfd_xstormy16_arch, |
&bfd_xstormy16_arch, |
515 |
|
&bfd_xtensa_arch, |
516 |
&bfd_z8k_arch, |
&bfd_z8k_arch, |
517 |
#endif |
#endif |
518 |
0 |
0 |
523 |
bfd_printable_name |
bfd_printable_name |
524 |
|
|
525 |
SYNOPSIS |
SYNOPSIS |
526 |
const char *bfd_printable_name(bfd *abfd); |
const char *bfd_printable_name (bfd *abfd); |
527 |
|
|
528 |
DESCRIPTION |
DESCRIPTION |
529 |
Return a printable string representing the architecture and machine |
Return a printable string representing the architecture and machine |
532 |
*/ |
*/ |
533 |
|
|
534 |
const char * |
const char * |
535 |
bfd_printable_name (abfd) |
bfd_printable_name (bfd *abfd) |
|
bfd *abfd; |
|
536 |
{ |
{ |
537 |
return abfd->arch_info->printable_name; |
return abfd->arch_info->printable_name; |
538 |
} |
} |
542 |
bfd_scan_arch |
bfd_scan_arch |
543 |
|
|
544 |
SYNOPSIS |
SYNOPSIS |
545 |
const bfd_arch_info_type *bfd_scan_arch(const char *string); |
const bfd_arch_info_type *bfd_scan_arch (const char *string); |
546 |
|
|
547 |
DESCRIPTION |
DESCRIPTION |
548 |
Figure out if BFD supports any cpu which could be described with |
Figure out if BFD supports any cpu which could be described with |
551 |
*/ |
*/ |
552 |
|
|
553 |
const bfd_arch_info_type * |
const bfd_arch_info_type * |
554 |
bfd_scan_arch (string) |
bfd_scan_arch (const char *string) |
|
const char *string; |
|
555 |
{ |
{ |
556 |
const bfd_arch_info_type * const *app, *ap; |
const bfd_arch_info_type * const *app, *ap; |
557 |
|
|
573 |
bfd_arch_list |
bfd_arch_list |
574 |
|
|
575 |
SYNOPSIS |
SYNOPSIS |
576 |
const char **bfd_arch_list(void); |
const char **bfd_arch_list (void); |
577 |
|
|
578 |
DESCRIPTION |
DESCRIPTION |
579 |
Return a freshly malloced NULL-terminated vector of the names |
Return a freshly malloced NULL-terminated vector of the names |
581 |
*/ |
*/ |
582 |
|
|
583 |
const char ** |
const char ** |
584 |
bfd_arch_list () |
bfd_arch_list (void) |
585 |
{ |
{ |
586 |
int vec_length = 0; |
int vec_length = 0; |
587 |
const char **name_ptr; |
const char **name_ptr; |
601 |
} |
} |
602 |
|
|
603 |
amt = (vec_length + 1) * sizeof (char **); |
amt = (vec_length + 1) * sizeof (char **); |
604 |
name_list = (const char **) bfd_malloc (amt); |
name_list = bfd_malloc (amt); |
605 |
if (name_list == NULL) |
if (name_list == NULL) |
606 |
return NULL; |
return NULL; |
607 |
|
|
626 |
bfd_arch_get_compatible |
bfd_arch_get_compatible |
627 |
|
|
628 |
SYNOPSIS |
SYNOPSIS |
629 |
const bfd_arch_info_type *bfd_arch_get_compatible( |
const bfd_arch_info_type *bfd_arch_get_compatible |
630 |
const bfd *abfd, |
(const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns); |
|
const bfd *bbfd); |
|
631 |
|
|
632 |
DESCRIPTION |
DESCRIPTION |
633 |
Determine whether two BFDs' |
Determine whether two BFDs' architectures and machine types |
634 |
architectures and machine types are compatible. Calculates |
are compatible. Calculates the lowest common denominator |
635 |
the lowest common denominator between the two architectures |
between the two architectures and machine types implied by |
636 |
and machine types implied by the BFDs and returns a pointer to |
the BFDs and returns a pointer to an <<arch_info>> structure |
637 |
an <<arch_info>> structure describing the compatible machine. |
describing the compatible machine. |
638 |
*/ |
*/ |
639 |
|
|
640 |
const bfd_arch_info_type * |
const bfd_arch_info_type * |
641 |
bfd_arch_get_compatible (abfd, bbfd) |
bfd_arch_get_compatible (const bfd *abfd, |
642 |
const bfd *abfd; |
const bfd *bbfd, |
643 |
const bfd *bbfd; |
bfd_boolean accept_unknowns) |
644 |
{ |
{ |
645 |
/* If either architecture is unknown, then all we can do is assume |
const bfd * ubfd = NULL; |
646 |
the user knows what he's doing. */ |
|
647 |
if (abfd->arch_info->arch == bfd_arch_unknown) |
/* Look for an unknown architecture. */ |
648 |
return bbfd->arch_info; |
if (((ubfd = abfd) && ubfd->arch_info->arch == bfd_arch_unknown) |
649 |
if (bbfd->arch_info->arch == bfd_arch_unknown) |
|| ((ubfd = bbfd) && ubfd->arch_info->arch == bfd_arch_unknown)) |
650 |
return abfd->arch_info; |
{ |
651 |
|
/* We can allow an unknown architecture if accept_unknowns |
652 |
|
is true, or if the target is the "binary" format, which |
653 |
|
has an unknown architecture. Since the binary format can |
654 |
|
only be set by explicit request from the user, it is safe |
655 |
|
to assume that they know what they are doing. */ |
656 |
|
if (accept_unknowns |
657 |
|
|| strcmp (bfd_get_target (ubfd), "binary") == 0) |
658 |
|
return ubfd->arch_info; |
659 |
|
return NULL; |
660 |
|
} |
661 |
|
|
662 |
/* Otherwise architecture-specific code has to decide. */ |
/* Otherwise architecture-specific code has to decide. */ |
663 |
return abfd->arch_info->compatible (abfd->arch_info, bbfd->arch_info); |
return abfd->arch_info->compatible (abfd->arch_info, bbfd->arch_info); |
678 |
*/ |
*/ |
679 |
|
|
680 |
const bfd_arch_info_type bfd_default_arch_struct = { |
const bfd_arch_info_type bfd_default_arch_struct = { |
681 |
32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, true, |
32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, TRUE, |
682 |
bfd_default_compatible, |
bfd_default_compatible, |
683 |
bfd_default_scan, |
bfd_default_scan, |
684 |
0, |
0, |
689 |
bfd_set_arch_info |
bfd_set_arch_info |
690 |
|
|
691 |
SYNOPSIS |
SYNOPSIS |
692 |
void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg); |
void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); |
693 |
|
|
694 |
DESCRIPTION |
DESCRIPTION |
695 |
Set the architecture info of @var{abfd} to @var{arg}. |
Set the architecture info of @var{abfd} to @var{arg}. |
696 |
*/ |
*/ |
697 |
|
|
698 |
void |
void |
699 |
bfd_set_arch_info (abfd, arg) |
bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg) |
|
bfd *abfd; |
|
|
const bfd_arch_info_type *arg; |
|
700 |
{ |
{ |
701 |
abfd->arch_info = arg; |
abfd->arch_info = arg; |
702 |
} |
} |
706 |
bfd_default_set_arch_mach |
bfd_default_set_arch_mach |
707 |
|
|
708 |
SYNOPSIS |
SYNOPSIS |
709 |
boolean bfd_default_set_arch_mach(bfd *abfd, |
bfd_boolean bfd_default_set_arch_mach |
710 |
enum bfd_architecture arch, |
(bfd *abfd, enum bfd_architecture arch, unsigned long mach); |
|
unsigned long mach); |
|
711 |
|
|
712 |
DESCRIPTION |
DESCRIPTION |
713 |
Set the architecture and machine type in BFD @var{abfd} |
Set the architecture and machine type in BFD @var{abfd} |
716 |
pointer. |
pointer. |
717 |
*/ |
*/ |
718 |
|
|
719 |
boolean |
bfd_boolean |
720 |
bfd_default_set_arch_mach (abfd, arch, mach) |
bfd_default_set_arch_mach (bfd *abfd, |
721 |
bfd *abfd; |
enum bfd_architecture arch, |
722 |
enum bfd_architecture arch; |
unsigned long mach) |
|
unsigned long mach; |
|
723 |
{ |
{ |
724 |
abfd->arch_info = bfd_lookup_arch (arch, mach); |
abfd->arch_info = bfd_lookup_arch (arch, mach); |
725 |
if (abfd->arch_info != NULL) |
if (abfd->arch_info != NULL) |
726 |
return true; |
return TRUE; |
727 |
|
|
728 |
abfd->arch_info = &bfd_default_arch_struct; |
abfd->arch_info = &bfd_default_arch_struct; |
729 |
bfd_set_error (bfd_error_bad_value); |
bfd_set_error (bfd_error_bad_value); |
730 |
return false; |
return FALSE; |
731 |
} |
} |
732 |
|
|
733 |
/* |
/* |
735 |
bfd_get_arch |
bfd_get_arch |
736 |
|
|
737 |
SYNOPSIS |
SYNOPSIS |
738 |
enum bfd_architecture bfd_get_arch(bfd *abfd); |
enum bfd_architecture bfd_get_arch (bfd *abfd); |
739 |
|
|
740 |
DESCRIPTION |
DESCRIPTION |
741 |
Return the enumerated type which describes the BFD @var{abfd}'s |
Return the enumerated type which describes the BFD @var{abfd}'s |
743 |
*/ |
*/ |
744 |
|
|
745 |
enum bfd_architecture |
enum bfd_architecture |
746 |
bfd_get_arch (abfd) |
bfd_get_arch (bfd *abfd) |
|
bfd *abfd; |
|
747 |
{ |
{ |
748 |
return abfd->arch_info->arch; |
return abfd->arch_info->arch; |
749 |
} |
} |
753 |
bfd_get_mach |
bfd_get_mach |
754 |
|
|
755 |
SYNOPSIS |
SYNOPSIS |
756 |
unsigned long bfd_get_mach(bfd *abfd); |
unsigned long bfd_get_mach (bfd *abfd); |
757 |
|
|
758 |
DESCRIPTION |
DESCRIPTION |
759 |
Return the long type which describes the BFD @var{abfd}'s |
Return the long type which describes the BFD @var{abfd}'s |
761 |
*/ |
*/ |
762 |
|
|
763 |
unsigned long |
unsigned long |
764 |
bfd_get_mach (abfd) |
bfd_get_mach (bfd *abfd) |
|
bfd *abfd; |
|
765 |
{ |
{ |
766 |
return abfd->arch_info->mach; |
return abfd->arch_info->mach; |
767 |
} |
} |
771 |
bfd_arch_bits_per_byte |
bfd_arch_bits_per_byte |
772 |
|
|
773 |
SYNOPSIS |
SYNOPSIS |
774 |
unsigned int bfd_arch_bits_per_byte(bfd *abfd); |
unsigned int bfd_arch_bits_per_byte (bfd *abfd); |
775 |
|
|
776 |
DESCRIPTION |
DESCRIPTION |
777 |
Return the number of bits in one of the BFD @var{abfd}'s |
Return the number of bits in one of the BFD @var{abfd}'s |
779 |
*/ |
*/ |
780 |
|
|
781 |
unsigned int |
unsigned int |
782 |
bfd_arch_bits_per_byte (abfd) |
bfd_arch_bits_per_byte (bfd *abfd) |
|
bfd *abfd; |
|
783 |
{ |
{ |
784 |
return abfd->arch_info->bits_per_byte; |
return abfd->arch_info->bits_per_byte; |
785 |
} |
} |
789 |
bfd_arch_bits_per_address |
bfd_arch_bits_per_address |
790 |
|
|
791 |
SYNOPSIS |
SYNOPSIS |
792 |
unsigned int bfd_arch_bits_per_address(bfd *abfd); |
unsigned int bfd_arch_bits_per_address (bfd *abfd); |
793 |
|
|
794 |
DESCRIPTION |
DESCRIPTION |
795 |
Return the number of bits in one of the BFD @var{abfd}'s |
Return the number of bits in one of the BFD @var{abfd}'s |
797 |
*/ |
*/ |
798 |
|
|
799 |
unsigned int |
unsigned int |
800 |
bfd_arch_bits_per_address (abfd) |
bfd_arch_bits_per_address (bfd *abfd) |
|
bfd *abfd; |
|
801 |
{ |
{ |
802 |
return abfd->arch_info->bits_per_address; |
return abfd->arch_info->bits_per_address; |
803 |
} |
} |
808 |
|
|
809 |
SYNOPSIS |
SYNOPSIS |
810 |
const bfd_arch_info_type *bfd_default_compatible |
const bfd_arch_info_type *bfd_default_compatible |
811 |
(const bfd_arch_info_type *a, |
(const bfd_arch_info_type *a, const bfd_arch_info_type *b); |
|
const bfd_arch_info_type *b); |
|
812 |
|
|
813 |
DESCRIPTION |
DESCRIPTION |
814 |
The default function for testing for compatibility. |
The default function for testing for compatibility. |
815 |
*/ |
*/ |
816 |
|
|
817 |
const bfd_arch_info_type * |
const bfd_arch_info_type * |
818 |
bfd_default_compatible (a, b) |
bfd_default_compatible (const bfd_arch_info_type *a, |
819 |
const bfd_arch_info_type *a; |
const bfd_arch_info_type *b) |
|
const bfd_arch_info_type *b; |
|
820 |
{ |
{ |
821 |
if (a->arch != b->arch) |
if (a->arch != b->arch) |
822 |
return NULL; |
return NULL; |
838 |
bfd_default_scan |
bfd_default_scan |
839 |
|
|
840 |
SYNOPSIS |
SYNOPSIS |
841 |
boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string); |
bfd_boolean bfd_default_scan |
842 |
|
(const struct bfd_arch_info *info, const char *string); |
843 |
|
|
844 |
DESCRIPTION |
DESCRIPTION |
845 |
The default function for working out whether this is an |
The default function for working out whether this is an |
846 |
architecture hit and a machine hit. |
architecture hit and a machine hit. |
847 |
*/ |
*/ |
848 |
|
|
849 |
boolean |
bfd_boolean |
850 |
bfd_default_scan (info, string) |
bfd_default_scan (const bfd_arch_info_type *info, const char *string) |
|
const bfd_arch_info_type *info; |
|
|
const char *string; |
|
851 |
{ |
{ |
852 |
const char *ptr_src; |
const char *ptr_src; |
853 |
const char *ptr_tst; |
const char *ptr_tst; |
859 |
default architecture? */ |
default architecture? */ |
860 |
if (strcasecmp (string, info->arch_name) == 0 |
if (strcasecmp (string, info->arch_name) == 0 |
861 |
&& info->the_default) |
&& info->the_default) |
862 |
return true; |
return TRUE; |
863 |
|
|
864 |
/* Exact match of the machine name (PRINTABLE_NAME)? */ |
/* Exact match of the machine name (PRINTABLE_NAME)? */ |
865 |
if (strcasecmp (string, info->printable_name) == 0) |
if (strcasecmp (string, info->printable_name) == 0) |
866 |
return true; |
return TRUE; |
867 |
|
|
868 |
/* Given that printable_name contains no colon, attempt to match: |
/* Given that printable_name contains no colon, attempt to match: |
869 |
ARCH_NAME [ ":" ] PRINTABLE_NAME? */ |
ARCH_NAME [ ":" ] PRINTABLE_NAME? */ |
877 |
{ |
{ |
878 |
if (strcasecmp (string + strlen_arch_name + 1, |
if (strcasecmp (string + strlen_arch_name + 1, |
879 |
info->printable_name) == 0) |
info->printable_name) == 0) |
880 |
return true; |
return TRUE; |
881 |
} |
} |
882 |
else |
else |
883 |
{ |
{ |
884 |
if (strcasecmp (string + strlen_arch_name, |
if (strcasecmp (string + strlen_arch_name, |
885 |
info->printable_name) == 0) |
info->printable_name) == 0) |
886 |
return true; |
return TRUE; |
887 |
} |
} |
888 |
} |
} |
889 |
} |
} |
896 |
if (strncasecmp (string, info->printable_name, colon_index) == 0 |
if (strncasecmp (string, info->printable_name, colon_index) == 0 |
897 |
&& strcasecmp (string + colon_index, |
&& strcasecmp (string + colon_index, |
898 |
info->printable_name + colon_index + 1) == 0) |
info->printable_name + colon_index + 1) == 0) |
899 |
return true; |
return TRUE; |
900 |
} |
} |
901 |
|
|
902 |
/* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not |
/* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not |
903 |
attempt to match just <mach>, it could be ambigious. This test |
attempt to match just <mach>, it could be ambiguous. This test |
904 |
is left until later. */ |
is left until later. */ |
905 |
|
|
906 |
/* NOTE: The below is retained for compatibility only. Please do |
/* NOTE: The below is retained for compatibility only. Please do |
999 |
arch = bfd_arch_m68k; |
arch = bfd_arch_m68k; |
1000 |
number = bfd_mach_mcf5407; |
number = bfd_mach_mcf5407; |
1001 |
break; |
break; |
1002 |
|
case 5282: |
1003 |
|
arch = bfd_arch_m68k; |
1004 |
|
number = bfd_mach_mcf528x; |
1005 |
|
break; |
1006 |
|
|
1007 |
case 32000: |
case 32000: |
1008 |
arch = bfd_arch_we32k; |
arch = bfd_arch_we32k; |
1043 |
break; |
break; |
1044 |
|
|
1045 |
default: |
default: |
1046 |
return false; |
return FALSE; |
1047 |
} |
} |
1048 |
|
|
1049 |
if (arch != info->arch) |
if (arch != info->arch) |
1050 |
return false; |
return FALSE; |
1051 |
|
|
1052 |
if (number != info->mach) |
if (number != info->mach) |
1053 |
return false; |
return FALSE; |
1054 |
|
|
1055 |
return true; |
return TRUE; |
1056 |
} |
} |
1057 |
|
|
1058 |
/* |
/* |
1060 |
bfd_get_arch_info |
bfd_get_arch_info |
1061 |
|
|
1062 |
SYNOPSIS |
SYNOPSIS |
1063 |
const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd); |
const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); |
1064 |
|
|
1065 |
DESCRIPTION |
DESCRIPTION |
1066 |
Return the architecture info struct in @var{abfd}. |
Return the architecture info struct in @var{abfd}. |
1067 |
*/ |
*/ |
1068 |
|
|
1069 |
const bfd_arch_info_type * |
const bfd_arch_info_type * |
1070 |
bfd_get_arch_info (abfd) |
bfd_get_arch_info (bfd *abfd) |
|
bfd *abfd; |
|
1071 |
{ |
{ |
1072 |
return abfd->arch_info; |
return abfd->arch_info; |
1073 |
} |
} |
1078 |
|
|
1079 |
SYNOPSIS |
SYNOPSIS |
1080 |
const bfd_arch_info_type *bfd_lookup_arch |
const bfd_arch_info_type *bfd_lookup_arch |
1081 |
(enum bfd_architecture |
(enum bfd_architecture arch, unsigned long machine); |
|
arch, |
|
|
unsigned long machine); |
|
1082 |
|
|
1083 |
DESCRIPTION |
DESCRIPTION |
1084 |
Look for the architecure info structure which matches the |
Look for the architecture info structure which matches the |
1085 |
arguments @var{arch} and @var{machine}. A machine of 0 matches the |
arguments @var{arch} and @var{machine}. A machine of 0 matches the |
1086 |
machine/architecture structure which marks itself as the |
machine/architecture structure which marks itself as the |
1087 |
default. |
default. |
1088 |
*/ |
*/ |
1089 |
|
|
1090 |
const bfd_arch_info_type * |
const bfd_arch_info_type * |
1091 |
bfd_lookup_arch (arch, machine) |
bfd_lookup_arch (enum bfd_architecture arch, unsigned long machine) |
|
enum bfd_architecture arch; |
|
|
unsigned long machine; |
|
1092 |
{ |
{ |
1093 |
const bfd_arch_info_type * const *app, *ap; |
const bfd_arch_info_type * const *app, *ap; |
1094 |
|
|
1112 |
|
|
1113 |
SYNOPSIS |
SYNOPSIS |
1114 |
const char *bfd_printable_arch_mach |
const char *bfd_printable_arch_mach |
1115 |
(enum bfd_architecture arch, unsigned long machine); |
(enum bfd_architecture arch, unsigned long machine); |
1116 |
|
|
1117 |
DESCRIPTION |
DESCRIPTION |
1118 |
Return a printable string representing the architecture and |
Return a printable string representing the architecture and |
1122 |
*/ |
*/ |
1123 |
|
|
1124 |
const char * |
const char * |
1125 |
bfd_printable_arch_mach (arch, machine) |
bfd_printable_arch_mach (enum bfd_architecture arch, unsigned long machine) |
|
enum bfd_architecture arch; |
|
|
unsigned long machine; |
|
1126 |
{ |
{ |
1127 |
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, machine); |
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, machine); |
1128 |
|
|
1136 |
bfd_octets_per_byte |
bfd_octets_per_byte |
1137 |
|
|
1138 |
SYNOPSIS |
SYNOPSIS |
1139 |
unsigned int bfd_octets_per_byte(bfd *abfd); |
unsigned int bfd_octets_per_byte (bfd *abfd); |
1140 |
|
|
1141 |
DESCRIPTION |
DESCRIPTION |
1142 |
Return the number of octets (8-bit quantities) per target byte |
Return the number of octets (8-bit quantities) per target byte |
1145 |
*/ |
*/ |
1146 |
|
|
1147 |
unsigned int |
unsigned int |
1148 |
bfd_octets_per_byte (abfd) |
bfd_octets_per_byte (bfd *abfd) |
|
bfd *abfd; |
|
1149 |
{ |
{ |
1150 |
return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd), |
return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd), |
1151 |
bfd_get_mach (abfd)); |
bfd_get_mach (abfd)); |
1156 |
bfd_arch_mach_octets_per_byte |
bfd_arch_mach_octets_per_byte |
1157 |
|
|
1158 |
SYNOPSIS |
SYNOPSIS |
1159 |
unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch, |
unsigned int bfd_arch_mach_octets_per_byte |
1160 |
unsigned long machine); |
(enum bfd_architecture arch, unsigned long machine); |
1161 |
|
|
1162 |
DESCRIPTION |
DESCRIPTION |
1163 |
See bfd_octets_per_byte. |
See bfd_octets_per_byte. |
1167 |
*/ |
*/ |
1168 |
|
|
1169 |
unsigned int |
unsigned int |
1170 |
bfd_arch_mach_octets_per_byte (arch, mach) |
bfd_arch_mach_octets_per_byte (enum bfd_architecture arch, |
1171 |
enum bfd_architecture arch; |
unsigned long mach) |
|
unsigned long mach; |
|
1172 |
{ |
{ |
1173 |
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, mach); |
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, mach); |
1174 |
|
|