elf: Don't merge .note.gnu.property section in IR
[deliverable/binutils-gdb.git] / bfd / cpu-score.c
index 90d3113bd66bf7e04b0e4c5e4bee6f5677da5066..baa8d89222cb7a6019b2ca0237234acb9cd7d194 100644 (file)
@@ -1,14 +1,15 @@
 /* BFD support for the score processor
 /* BFD support for the score processor
-   Copyright 2006, 2007 Free Software Foundation, Inc.   
+   Copyright (C) 2006-2018 Free Software Foundation, Inc.
    Contributed by
    Contributed by
+   Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
    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
 
    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,
    (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
 
    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"
 
 
 #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(addr_bits, machine, print, default, next)            \
+{                                                              \
+  32,                          /* 16 bits in a word.  */       \
+  32,                          /* Bits in an address.  */      \
+  8,                           /* 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                                                         \
+}
+
+static const bfd_arch_info_type arch_info_struct[] =
+{
+  N (16, bfd_mach_score3, "score3", FALSE, NULL),
 };
 };
+
+const bfd_arch_info_type bfd_score_arch =
+  N (16, bfd_mach_score7, "score7", TRUE, & arch_info_struct[0]);
This page took 0.023876 seconds and 4 git commands to generate.