gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / bfd / cpu-score.c
index 90d3113bd66bf7e04b0e4c5e4bee6f5677da5066..58c8340021260eabe556c9f695856b61cfd6f1bf 100644 (file)
@@ -1,14 +1,15 @@
 /* BFD support for the score processor
-   Copyright 2006, 2007 Free Software Foundation, Inc.   
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by
+   Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
-   Pei-Lin Tsai (pltsai@sunplus.com)  
+   Pei-Lin Tsai (pltsai@sunplus.com)
 
    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 "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
 
-const bfd_arch_info_type
-bfd_score_arch =
+/* This routine is provided two arch_infos and works out which Score
+   machine which would be compatible with both and returns a pointer
+   to its info structure.  */
+
+static const bfd_arch_info_type *
+compatible (const bfd_arch_info_type * a, const bfd_arch_info_type * b)
 {
-  32,                          /* There's 32 bits_per_word.  */
-  32,                          /* There's 32 bits_per_address.  */
-  8,                           /* There's 8 bits_per_byte.  */
-  bfd_arch_score,              /* One of enum bfd_architecture, defined
-                                  in archures.c and provided in
-                                  generated header files.  */
-  0,                           /* Only 1 machine, but #255 for
-                                  historical reasons.  */
-  "score",                     /* The arch_name.  */
-  "score",                     /* The printable name is the same.  */
-  4,                           /* Section alignment power; each section
-                                  is aligned to (only) 2^4 bytes.  */
-  TRUE,                                /* This is the default "machine", since
-                                  there's only one.  */
-  bfd_default_compatible,      /* A default function for testing
-                                  "machine" compatibility of two
-                                  bfd_arch_info_type.  */
-  bfd_default_scan,            /* Check if an bfd_arch_info_type is a
-                                  match.  */
-  NULL                         /* Pointer to next bfd_arch_info_type in
-                                  the same family.  */
+  /* If a & b are for different architectures we can do nothing.  */
+  if (a->arch != b->arch)
+    return NULL;
+
+  if (a->mach != b->mach)
+    return NULL;
+
+  return a;
+}
+
+#define N(machine, print, default, next)                       \
+{                                                              \
+  32,                          /* Bits in a word.  */          \
+  32,                          /* Bits in an address.  */      \
+  8,                           /* Bits in a byte.  */          \
+  bfd_arch_score,                                              \
+  machine,                     /* Machine number.  */          \
+  "score",                     /* Architecture name.   */      \
+  print,                       /* Printable name.  */          \
+  4,                           /* Section align power.  */     \
+  default,                     /* The default machine.  */     \
+  compatible,                                                  \
+  bfd_default_scan,                                            \
+  bfd_arch_default_fill,                                       \
+  next,                                                                \
+  0 /* Maximum offset of a reloc from the start of an insn.  */ \
+}
+
+static const bfd_arch_info_type arch_info_struct[] =
+{
+  N (bfd_mach_score3, "score3", FALSE, NULL),
 };
+
+const bfd_arch_info_type bfd_score_arch =
+  N (bfd_mach_score7, "score7", TRUE, & arch_info_struct[0]);
This page took 0.024678 seconds and 4 git commands to generate.