]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - bfd/cpu-m32c.c
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / bfd / cpu-m32c.c
index e60b746ffc2dd519a7243d3b2d5d50d8b017c9bd..0fd4067a2a874660d844e18ac6361ab949ad5fe1 100644 (file)
@@ -1,11 +1,11 @@
 /* BFD support for the M16C/M32C processors.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004-2021 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,
 
    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);
+