X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fcpu-score.c;h=58c8340021260eabe556c9f695856b61cfd6f1bf;hb=acdf84a65400f416c60a0c9c14953ba5a73fb0cd;hp=90d3113bd66bf7e04b0e4c5e4bee6f5677da5066;hpb=3db64b009284dda3a1ce10a91beb1297475e60a7;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/cpu-score.c b/bfd/cpu-score.c index 90d3113bd6..58c8340021 100644 --- a/bfd/cpu-score.c +++ b/bfd/cpu-score.c @@ -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, @@ -18,34 +19,52 @@ 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]);