X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcpu-m32c.c;h=95d5e4d016b01c468a11543a8e05bf04c7a32b91;hb=6f6fd151cbf226bbaa66e44977f57b7c6dc33d89;hp=e60b746ffc2dd519a7243d3b2d5d50d8b017c9bd;hpb=49f58d10f8827774889f6dbc79a934943be8bc44;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/cpu-m32c.c b/bfd/cpu-m32c.c index e60b746ffc..95d5e4d016 100644 --- a/bfd/cpu-m32c.c +++ b/bfd/cpu-m32c.c @@ -1,11 +1,11 @@ /* BFD support for the M16C/M32C processors. - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004-2020 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,42 +15,33 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. */ -#include "bfd.h" #include "sysdep.h" +#include "bfd.h" #include "libbfd.h" -static const bfd_arch_info_type arch_info_struct[] = +/* Like bfd_default_scan but if the string is just "m32c" then + skip the m16c architecture. */ + +static bfd_boolean +m32c_scan (const bfd_arch_info_type * info, const char * string) { - { - 32, /* bits per word */ - 32, /* bits per address */ - 8, /* bits per byte */ - bfd_arch_m32c, /* architecture */ - bfd_mach_m32c, /* machine */ - "m32c", /* architecture name */ - "m32c", /* printable name */ - 3, /* section align power */ - FALSE, /* the default ? */ - bfd_default_compatible, /* architecture comparison fn */ - bfd_default_scan, /* string to architecture convert fn */ - NULL /* next in list */ - }, -}; + if (strcmp (string, "m32c") == 0 + && info->mach == bfd_mach_m16c) + return FALSE; + + return bfd_default_scan (info, string); +} + +#define N(number, print, align, default, next) \ +{ 32, 32, 8, bfd_arch_m32c, number, "m32c", print, align, default, \ + bfd_default_compatible, m32c_scan, bfd_arch_default_fill, next, 0 } + +static const bfd_arch_info_type arch_info_struct = + N (bfd_mach_m32c, "m32c", 3, FALSE, NULL); const bfd_arch_info_type bfd_m32c_arch = -{ - 32, /* Bits per word. */ - 32, /* Bits per address. */ - 8, /* Bits per byte. */ - bfd_arch_m32c, /* Architecture. */ - bfd_mach_m16c, /* Machine. */ - "m32c", /* Architecture name. */ - "m16c", /* Printable name. */ - 4, /* Section align power. */ - TRUE, /* The default ? */ - bfd_default_compatible, /* Architecture comparison fn. */ - bfd_default_scan, /* String to architecture convert fn. */ - &arch_info_struct[0], /* Next in list. */ -}; + N (bfd_mach_m16c, "m16c", 4, TRUE, &arch_info_struct); +