X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcpu-powerpc.c;h=3e9ef8ab33ae1ae4f7d2f1dcdfd300ccea699f43;hb=de32a80f8f48896d4d07babd8c998789dd07c73d;hp=8222502e3fe65a18d5b5d61d024acaf023ad51a9;hpb=cd123cb70c845b890eed231a84e6e84c92c2ef92;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/cpu-powerpc.c b/bfd/cpu-powerpc.c index 8222502e3f..3e9ef8ab33 100644 --- a/bfd/cpu-powerpc.c +++ b/bfd/cpu-powerpc.c @@ -1,6 +1,5 @@ /* BFD PowerPC CPU definition - Copyright 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2007 - Free Software Foundation, Inc. + Copyright (C) 1994-2017 Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -26,13 +25,9 @@ /* The common PowerPC architecture is compatible with the RS/6000. */ -static const bfd_arch_info_type *powerpc_compatible - PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *)); - static const bfd_arch_info_type * -powerpc_compatible (a,b) - const bfd_arch_info_type *a; - const bfd_arch_info_type *b; +powerpc_compatible (const bfd_arch_info_type *a, + const bfd_arch_info_type *b) { BFD_ASSERT (a->arch == bfd_arch_powerpc); switch (b->arch) @@ -40,6 +35,10 @@ powerpc_compatible (a,b) default: return NULL; case bfd_arch_powerpc: + if (a->mach == bfd_mach_ppc_vle && b->bits_per_word == 32) + return a; + if (b->mach == bfd_mach_ppc_vle && a->bits_per_word == 32) + return b; return bfd_default_compatible (a, b); case bfd_arch_rs6000: if (b->mach == bfd_mach_rs6k) @@ -65,6 +64,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = TRUE, /* default for 64 bit target */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[1] }, /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch @@ -81,6 +81,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[2], }, #else @@ -97,6 +98,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = TRUE, /* default for 32 bit target */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[1], }, /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch @@ -113,6 +115,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[2] }, #endif @@ -128,6 +131,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[3] }, { @@ -142,6 +146,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[4] }, { @@ -156,6 +161,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[5] }, { @@ -170,6 +176,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[6] }, { @@ -184,6 +191,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[7] }, { @@ -198,6 +206,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[8] }, { @@ -212,6 +221,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[9] }, { @@ -226,6 +236,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[10] }, { @@ -240,6 +251,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[11] }, { @@ -254,6 +266,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[12] }, { @@ -268,6 +281,7 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[13] }, { @@ -282,8 +296,39 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, &bfd_powerpc_archs[14] }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e500mc, + "powerpc", + "powerpc:e500mc", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[15] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e500mc64, + "powerpc", + "powerpc:e500mc64", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[16] + }, { 32, /* 32 bits in a word */ 32, /* 32 bits in an address */ @@ -296,7 +341,8 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, - &bfd_powerpc_archs[15] + bfd_arch_default_fill, + &bfd_powerpc_archs[17] }, { 32, /* 32 bits in a word */ @@ -310,6 +356,67 @@ const bfd_arch_info_type bfd_powerpc_archs[] = FALSE, /* not the default */ powerpc_compatible, bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[18] + }, + { + 32, /* 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_titan, + "powerpc", + "powerpc:titan", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[19] + }, + { + 16, /* 16 or 32 bits in a word */ + 32, /* 32 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_vle, + "powerpc", + "powerpc:vle", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[20] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e5500, + "powerpc", + "powerpc:e5500", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, + &bfd_powerpc_archs[21] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc_e6500, + "powerpc", + "powerpc:e6500", + 3, + FALSE, /* not the default */ + powerpc_compatible, + bfd_default_scan, + bfd_arch_default_fill, 0 } };