.#define bfd_mach_sparc_v9_p(mach) \
. ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a)
. bfd_arch_mips, {* MIPS Rxxxx *}
+.#define bfd_mach_mips3000 3000
+.#define bfd_mach_mips6000 6000
+.#define bfd_mach_mips4000 4000
+.#define bfd_mach_mips8000 8000
+.#define bfd_mach_mips16 16
+. {* start-sanitize-vr5400 *}
+.#define bfd_mach_vr5400 5400
+.#define bfd_mach_vr5000 5000
+. {* end-sanitize-vr5400 *}
. bfd_arch_i386, {* Intel 386 *}
.#define bfd_mach_i386_i386 0
.#define bfd_mach_i386_i8086 1
. bfd_arch_powerpc, {* PowerPC *}
. bfd_arch_rs6000, {* IBM RS/6000 *}
. bfd_arch_hppa, {* HP PA RISC *}
-. {* start-sanitize-d10v *}
. bfd_arch_d10v, {* Mitsubishi D10V *}
-. {* end-sanitize-d10v *}
. {* start-sanitize-d30v *}
. bfd_arch_d30v, {* Mitsubishi D30V *}
. {* end-sanitize-d30v *}
.#define bfd_mach_z8002 2
. bfd_arch_h8500, {* Hitachi H8/500 *}
. bfd_arch_sh, {* Hitachi SH *}
+.#define bfd_mach_sh 0
+.#define bfd_mach_sh3 0x30
+.#define bfd_mach_sh3e 0x3e
+. {* start-sanitize-sh4 *}
+.#define bfd_mach_sh4 0x40
+. {* end-sanitize-sh4 *}
. bfd_arch_alpha, {* Dec Alpha *}
. bfd_arch_arm, {* Advanced Risc Machines ARM *}
+.#define bfd_mach_arm_2 1
+.#define bfd_mach_arm_2a 2
+.#define bfd_mach_arm_3 3
+.#define bfd_mach_arm_3M 4
+.#define bfd_mach_arm_4 5
+.#define bfd_mach_arm_4T 6
. bfd_arch_ns32k, {* National Semiconductors ns32000 *}
. bfd_arch_w65, {* WDC 65816 *}
. {* start-sanitize-tic80 *}
. bfd_arch_tic80, {* TI TMS320c80 (MVP) *}
. {* end-sanitize-tic80 *}
-. {* start-sanitize-v850 *}
+. {* start-sanitize-sky *}
+. bfd_arch_txvu, {* TX VU *}
+.#define bfd_mach_txvu 0
+. {* end-sanitize-sky *}
. bfd_arch_v850, {* NEC V850 *}
-. {* end-sanitize-v850 *}
-. {* start-sanitize-arc *}
+.#define bfd_mach_v850 0
+. {* start-sanitize-v850e *}
+.#define bfd_mach_v850e 'E'
+.#define bfd_mach_v850ea 'A'
+. {* end-sanitize-v850e *}
. bfd_arch_arc, {* Argonaut RISC Core *}
.#define bfd_mach_arc_base 0
-.#define bfd_mach_arc_host 1
-.#define bfd_mach_arc_graphics 2
-.#define bfd_mach_arc_audio 3
-. {* end-sanitize-arc *}
-. {* start-sanitize-m32r *}
-. bfd_arch_m32r, {* Mitsubishi M32R *}
-. {* end-sanitize-m32r *}
+. bfd_arch_m32r, {* Mitsubishi M32R/D *}
+.#define bfd_mach_m32r 0 {* backwards compatibility *}
+. {* start-sanitize-m32rx *}
+.#define bfd_mach_m32rx 'x'
+. {* end-sanitize-m32rx *}
. bfd_arch_mn10200, {* Matsushita MN10200 *}
. bfd_arch_mn10300, {* Matsushita MN10300 *}
. bfd_arch_last
extern const bfd_arch_info_type bfd_a29k_arch;
extern const bfd_arch_info_type bfd_alpha_arch;
-/* start-sanitize-arc */
extern const bfd_arch_info_type bfd_arc_arch;
-/* end-sanitize-arc */
extern const bfd_arch_info_type bfd_arm_arch;
-/* start-sanitize-d10v */
extern const bfd_arch_info_type bfd_d10v_arch;
-/* end-sanitize-d10v */
/* start-sanitize-d30v */
extern const bfd_arch_info_type bfd_d30v_arch;
/* end-sanitize-d30v */
extern const bfd_arch_info_type bfd_i386_arch;
extern const bfd_arch_info_type bfd_i860_arch;
extern const bfd_arch_info_type bfd_i960_arch;
-/* start-sanitize-m32r */
extern const bfd_arch_info_type bfd_m32r_arch;
-/* end-sanitize-m32r */
extern const bfd_arch_info_type bfd_m68k_arch;
extern const bfd_arch_info_type bfd_m88k_arch;
extern const bfd_arch_info_type bfd_mips_arch;
/* start-sanitize-tic80 */
extern const bfd_arch_info_type bfd_tic80_arch;
/* end-sanitize-tic80 */
+/* start-sanitize-sky */
+extern const bfd_arch_info_type bfd_txvu_arch;
+/* end-sanitize-sky */
extern const bfd_arch_info_type bfd_vax_arch;
extern const bfd_arch_info_type bfd_we32k_arch;
extern const bfd_arch_info_type bfd_z8k_arch;
extern const bfd_arch_info_type bfd_ns32k_arch;
extern const bfd_arch_info_type bfd_w65_arch;
-/* start-sanitize-v850 */
extern const bfd_arch_info_type bfd_v850_arch;
-/* end-sanitize-v850 */
static const bfd_arch_info_type * const bfd_archures_list[] =
{
#else
&bfd_a29k_arch,
&bfd_alpha_arch,
-/* start-sanitize-arc */
&bfd_arc_arch,
-/* end-sanitize-arc */
&bfd_arm_arch,
-/* start-sanitize-d10v */
&bfd_d10v_arch,
-/* end-sanitize-d10v */
/* start-sanitize-d30v */
&bfd_d30v_arch,
/* end-sanitize-d30v */
&bfd_i386_arch,
&bfd_i860_arch,
&bfd_i960_arch,
-/* start-sanitize-m32r */
&bfd_m32r_arch,
-/* end-sanitize-m32r */
&bfd_m68k_arch,
&bfd_m88k_arch,
&bfd_mips_arch,
/* start-sanitize-tic80 */
&bfd_tic80_arch,
/* end-sanitize-tic80 */
+/* start-sanitize-sky */
+ &bfd_txvu_arch,
+/* end-sanitize-sky */
&bfd_vax_arch,
&bfd_we32k_arch,
&bfd_z8k_arch,
&bfd_ns32k_arch,
&bfd_w65_arch,
-/* start-sanitize-v850*/
&bfd_v850_arch,
-/* end-sanitize-v850 */
#endif
0
};
+/*
+FUNCTION
+ bfd_arch_list
+
+SYNOPSIS
+ const char **bfd_arch_list(void);
+
+DESCRIPTION
+ Return a freshly malloced NULL-terminated vector of the names
+ of all the valid BFD architectures. Do not modify the names.
+
+*/
+
+const char **
+bfd_arch_list ()
+{
+ int vec_length = 0;
+ const char **name_ptr;
+ const char **name_list;
+ const bfd_arch_info_type * const *app;
+
+ /* Determine the number of architectures */
+ vec_length = 0;
+ for (app = bfd_archures_list; *app != NULL; app++)
+ {
+ const bfd_arch_info_type *ap;
+ for (ap = *app; ap != NULL; ap = ap->next)
+ {
+ vec_length++;
+ }
+ }
+
+ name_list = (CONST char **)
+ bfd_malloc ((vec_length + 1) * sizeof (char **));
+ if (name_list == NULL)
+ return NULL;
+
+ /* Point the list at each of the names */
+ name_ptr = name_list;
+ for (app = bfd_archures_list; *app != NULL; app++)
+ {
+ const bfd_arch_info_type *ap;
+ for (ap = *app; ap != NULL; ap = ap->next)
+ {
+ *name_ptr = ap->printable_name;
+ name_ptr++;
+ }
+ }
+ *name_ptr = NULL;
+
+ return name_list;
+}
+
+
+
/*
FUNCTION
bfd_arch_get_compatible
const char *ptr_tst;
unsigned long number;
enum bfd_architecture arch;
+ const char *printable_name_colon;
+
+ /* Exact match of the architecture name (ARCH_NAME) and also the
+ default architecture? */
+ if (strcasecmp (string, info->arch_name) == 0
+ && info->the_default)
+ return true;
- /* First test for an exact match */
- if (strcmp (string, info->printable_name) == 0)
+ /* Exact match of the machine name (PRINTABLE_NAME)? */
+ if (strcasecmp (string, info->printable_name) == 0)
return true;
+
+ /* Given that printable_name contains no colon, attempt to match:
+ ARCH_NAME [ ":" ] PRINTABLE_NAME? */
+ printable_name_colon = strchr (info->printable_name, ':');
+ if (printable_name_colon == NULL)
+ {
+ int strlen_arch_name = strlen (info->arch_name);
+ if (strncasecmp (string, info->arch_name, strlen_arch_name) == 0)
+ if (string[strlen_arch_name] == ':')
+ {
+ if (strcasecmp (string + strlen_arch_name + 1,
+ info->printable_name) == 0)
+ return true;
+ }
+ else
+ {
+ if (strcasecmp (string + strlen_arch_name,
+ info->printable_name) == 0)
+ return true;
+ }
+ }
+
+ /* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>;
+ Attempt to match: <arch> <mach>? */
+ if (printable_name_colon != NULL)
+ {
+ int colon_index = printable_name_colon - info->printable_name;
+ if (strncasecmp (string, info->printable_name, colon_index) == 0
+ && strcasecmp (string + colon_index,
+ info->printable_name + colon_index + 1) == 0)
+ return true;
+ }
+
+ /* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not
+ attempt to match just <mach>, it could be ambigious. This test
+ is left until later. */
+
+ /* NOTE: The below is retained for compatibility only. Please do not
+ add to this code */
/* See how much of the supplied string matches with the
architecture, eg the string m68k:68020 would match the 68k entry
ptr_src++;
}
+ /* NOTE: The below is retained for compatibility only.
+ PLEASE DO NOT ADD TO THIS CODE. */
+
switch (number)
{
- case 65:
- arch = bfd_arch_w65;
- break;
-
- case 300:
- arch = bfd_arch_h8300;
- break;
-
- case 500:
- arch = bfd_arch_h8500;
- break;
-
case 68010:
case 68020:
case 68030:
arch = bfd_arch_m68k;
break;
- case 386:
- case 80386:
- case 486:
- case 80486:
- arch = bfd_arch_i386;
- break;
-
- case 29000:
- arch = bfd_arch_a29k;
- break;
-
- case 8000:
- arch = bfd_arch_z8k;
- break;
-
case 32000:
arch = bfd_arch_we32k;
break;
- case 860:
- case 80860:
- arch = bfd_arch_i860;
- break;
- case 960:
- case 80960:
- arch = bfd_arch_i960;
+ case 3000:
+ arch = bfd_arch_mips;
+ number = bfd_mach_mips3000;
break;
- case 2000:
- case 3000:
case 4000:
- case 4400:
arch = bfd_arch_mips;
+ number = bfd_mach_mips4000;
break;
case 6000: