This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Remove CR16C support


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=595d3787e9cbedbceb6182f873a4774707c0e74f

commit 595d3787e9cbedbceb6182f873a4774707c0e74f
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Nov 7 13:32:16 2019 +1030

    Remove CR16C support
    
    I think it is past time to remove CR16C support.  CR16C was added in
    2004, and only for ld.  gas and binutils support is lacking, and there
    have been no commits to bfd/elf32-cr16c.c other than warning fixes or
    global maintainers making changes to all targets.  I see no maintainer
    listed for CR16C, and no commits from anyone at NSC supporting the
    target.  Furthermore, at the time the CR16 support was added in 2007,
    config.sub was changed upstream to no longer recognise cr16c as a
    valid cpu.  That means the CR16C ld support is only available as a
    secondary target by configuring with, for example,
    --enable-targets=all or --enable-targets=cr16c-unknown-elf.  No
    testing of the CR16C target is possible.
    
    include/
    	* elf/cr16c.h: Delete.
    bfd/
    	* cpu-cr16c.c: Delete.
    	* elf32-cr16c.c: Delete.
    	* Makefile.am,
    	* archures.c,
    	* config.bfd,
    	* configure.ac,
    	* reloc.c,
    	* targets.c: Remove cr16c support.
    	* Makefile.in,
    	* bfd-in2.h,
    	* configure,
    	* libbfd.h,
    	* po/SRC-POTFILES.in: Regenerate.
    ld/
    	* emulparams/elf32cr16c.sh: Delete.
    	* scripttempl/elf32cr16c.sc: Delete.
    	* Makefile.am,
    	* configure.tgt: Remove cr16c support.
    	* NEWS: Mention removal of cr16c.
    	* Makefile.in,
    	* po/BLD-POTFILES.in: Regenerate.

Diff:
---
 bfd/ChangeLog                |  16 +
 bfd/Makefile.am              |   4 -
 bfd/Makefile.in              |   6 -
 bfd/archures.c               |   4 -
 bfd/bfd-in2.h                |  44 --
 bfd/config.bfd               |   6 +-
 bfd/configure                |   1 -
 bfd/configure.ac             |   1 -
 bfd/cpu-cr16c.c              |  41 --
 bfd/elf32-cr16c.c            | 963 -------------------------------------------
 bfd/libbfd.h                 |  40 --
 bfd/po/SRC-POTFILES.in       |   2 -
 bfd/reloc.c                  |  82 ----
 bfd/targets.c                |   2 -
 include/ChangeLog            |   4 +
 include/elf/cr16c.h          | 258 ------------
 ld/ChangeLog                 |  10 +
 ld/Makefile.am               |   2 -
 ld/Makefile.in               |   3 -
 ld/NEWS                      |   2 +
 ld/configure.tgt             |   2 -
 ld/emulparams/elf32cr16c.sh  |   5 -
 ld/po/BLD-POTFILES.in        |   1 -
 ld/scripttempl/elf32cr16c.sc |  66 ---
 24 files changed, 33 insertions(+), 1532 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3fcc985..07eb053 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,19 @@
+2019-11-07  Alan Modra  <amodra@gmail.com>
+
+	* cpu-cr16c.c: Delete.
+	* elf32-cr16c.c: Delete.
+	* Makefile.am,
+	* archures.c,
+	* config.bfd,
+	* configure.ac,
+	* reloc.c,
+	* targets.c: Remove cr16c support.
+	* Makefile.in,
+	* bfd-in2.h,
+	* configure,
+	* libbfd.h,
+	* po/SRC-POTFILES.in: Regenerate.
+
 2019-11-05  Tim Rühsen  <tim.ruehsen@gmx.de>
 
 	* doc/chew.c (add_to_definition): Use correct type when
diff --git a/bfd/Makefile.am b/bfd/Makefile.am
index ca868e7..e5bd28f 100644
--- a/bfd/Makefile.am
+++ b/bfd/Makefile.am
@@ -98,7 +98,6 @@ ALL_MACHINES = \
 	cpu-bfin.lo \
 	cpu-bpf.lo \
 	cpu-cr16.lo \
-	cpu-cr16c.lo \
 	cpu-cris.lo \
 	cpu-crx.lo \
 	cpu-csky.lo \
@@ -185,7 +184,6 @@ ALL_MACHINES_CFILES = \
 	cpu-bfin.c \
 	cpu-bpf.c \
 	cpu-cr16.c \
-	cpu-cr16c.c \
 	cpu-cris.c \
 	cpu-crx.c \
 	cpu-csky.c \
@@ -304,7 +302,6 @@ BFD32_BACKENDS = \
 	elf32-avr.lo \
 	elf32-bfin.lo \
 	elf32-cr16.lo \
-	elf32-cr16c.lo \
 	elf32-cris.lo \
 	elf32-crx.lo \
 	elf32-csky.lo \
@@ -441,7 +438,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-avr.c \
 	elf32-bfin.c \
 	elf32-cr16.c \
-	elf32-cr16c.c \
 	elf32-cris.c \
 	elf32-crx.c \
 	elf32-csky.c \
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index ec1ce3e..15334f1 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -522,7 +522,6 @@ ALL_MACHINES = \
 	cpu-bfin.lo \
 	cpu-bpf.lo \
 	cpu-cr16.lo \
-	cpu-cr16c.lo \
 	cpu-cris.lo \
 	cpu-crx.lo \
 	cpu-csky.lo \
@@ -609,7 +608,6 @@ ALL_MACHINES_CFILES = \
 	cpu-bfin.c \
 	cpu-bpf.c \
 	cpu-cr16.c \
-	cpu-cr16c.c \
 	cpu-cris.c \
 	cpu-crx.c \
 	cpu-csky.c \
@@ -729,7 +727,6 @@ BFD32_BACKENDS = \
 	elf32-avr.lo \
 	elf32-bfin.lo \
 	elf32-cr16.lo \
-	elf32-cr16c.lo \
 	elf32-cris.lo \
 	elf32-crx.lo \
 	elf32-csky.lo \
@@ -866,7 +863,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-avr.c \
 	elf32-bfin.c \
 	elf32-cr16.c \
-	elf32-cr16c.c \
 	elf32-cris.c \
 	elf32-crx.c \
 	elf32-csky.c \
@@ -1344,7 +1340,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-bfin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-bpf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cr16.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cr16c.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-cris.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-crx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-csky.Plo@am__quote@
@@ -1442,7 +1437,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-avr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-bfin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cr16.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cr16c.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-cris.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-crx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-csky.Plo@am__quote@
diff --git a/bfd/archures.c b/bfd/archures.c
index 1e6a0e1..569876e 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -448,8 +448,6 @@ DESCRIPTION
 .#define bfd_mach_bfin		1
 .  bfd_arch_cr16,      {* National Semiconductor CompactRISC (ie CR16).  *}
 .#define bfd_mach_cr16		1
-.  bfd_arch_cr16c,     {* National Semiconductor CompactRISC.  *}
-.#define bfd_mach_cr16c		1
 .  bfd_arch_crx,       {*  National Semiconductor CRX.  *}
 .#define bfd_mach_crx		1
 .  bfd_arch_cris,      {* Axis CRIS.  *}
@@ -606,7 +604,6 @@ extern const bfd_arch_info_type bfd_arm_arch;
 extern const bfd_arch_info_type bfd_avr_arch;
 extern const bfd_arch_info_type bfd_bfin_arch;
 extern const bfd_arch_info_type bfd_cr16_arch;
-extern const bfd_arch_info_type bfd_cr16c_arch;
 extern const bfd_arch_info_type bfd_cris_arch;
 extern const bfd_arch_info_type bfd_crx_arch;
 extern const bfd_arch_info_type bfd_csky_arch;
@@ -698,7 +695,6 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
     &bfd_avr_arch,
     &bfd_bfin_arch,
     &bfd_cr16_arch,
-    &bfd_cr16c_arch,
     &bfd_cris_arch,
     &bfd_crx_arch,
     &bfd_csky_arch,
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 30b195a..3244905 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1826,8 +1826,6 @@ enum bfd_architecture
 #define bfd_mach_bfin          1
   bfd_arch_cr16,      /* National Semiconductor CompactRISC (ie CR16).  */
 #define bfd_mach_cr16          1
-  bfd_arch_cr16c,     /* National Semiconductor CompactRISC.  */
-#define bfd_mach_cr16c         1
   bfd_arch_crx,       /*  National Semiconductor CRX.  */
 #define bfd_mach_crx           1
   bfd_arch_cris,      /* Axis CRIS.  */
@@ -4859,48 +4857,6 @@ This is a 15 bit relative address.  If the most significant bits are all zero
 then it may be truncated to 8 bits.  */
   BFD_RELOC_S12Z_15_PCREL,
 
-/* NS CR16C Relocations.  */
-  BFD_RELOC_16C_NUM08,
-  BFD_RELOC_16C_NUM08_C,
-  BFD_RELOC_16C_NUM16,
-  BFD_RELOC_16C_NUM16_C,
-  BFD_RELOC_16C_NUM32,
-  BFD_RELOC_16C_NUM32_C,
-  BFD_RELOC_16C_DISP04,
-  BFD_RELOC_16C_DISP04_C,
-  BFD_RELOC_16C_DISP08,
-  BFD_RELOC_16C_DISP08_C,
-  BFD_RELOC_16C_DISP16,
-  BFD_RELOC_16C_DISP16_C,
-  BFD_RELOC_16C_DISP24,
-  BFD_RELOC_16C_DISP24_C,
-  BFD_RELOC_16C_DISP24a,
-  BFD_RELOC_16C_DISP24a_C,
-  BFD_RELOC_16C_REG04,
-  BFD_RELOC_16C_REG04_C,
-  BFD_RELOC_16C_REG04a,
-  BFD_RELOC_16C_REG04a_C,
-  BFD_RELOC_16C_REG14,
-  BFD_RELOC_16C_REG14_C,
-  BFD_RELOC_16C_REG16,
-  BFD_RELOC_16C_REG16_C,
-  BFD_RELOC_16C_REG20,
-  BFD_RELOC_16C_REG20_C,
-  BFD_RELOC_16C_ABS20,
-  BFD_RELOC_16C_ABS20_C,
-  BFD_RELOC_16C_ABS24,
-  BFD_RELOC_16C_ABS24_C,
-  BFD_RELOC_16C_IMM04,
-  BFD_RELOC_16C_IMM04_C,
-  BFD_RELOC_16C_IMM16,
-  BFD_RELOC_16C_IMM16_C,
-  BFD_RELOC_16C_IMM20,
-  BFD_RELOC_16C_IMM20_C,
-  BFD_RELOC_16C_IMM24,
-  BFD_RELOC_16C_IMM24_C,
-  BFD_RELOC_16C_IMM32,
-  BFD_RELOC_16C_IMM32_C,
-
 /* NS CR16 Relocations.  */
   BFD_RELOC_CR16_NUM8,
   BFD_RELOC_CR16_NUM16,
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 13d678e..0a96927 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -85,6 +85,7 @@ case $targ in
  arm-*-oabi | \
  arm-*-riscix* | \
  arm-epoc-pe* | \
+ cr16c-*-* | \
  h8300*-*-coff | \
  h8500*-*-coff | \
  hppa*-*-rtems* | \
@@ -436,11 +437,6 @@ case "${targ}" in
     targ_underscore=yes
     ;;
 
-  cr16c-*-elf*)
-    targ_defvec=cr16c_elf32_vec
-    targ_underscore=yes
-    ;;
-
 #ifdef BFD64
   cris-*-* | crisv32-*-*)
     targ_defvec=cris_aout_vec
diff --git a/bfd/configure b/bfd/configure
index e15957e..abd7b2a 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -14722,7 +14722,6 @@ do
     bfin_elf32_vec)		 tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfin_elf32_fdpic_vec)	 tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     cr16_elf32_vec)		 tb="$tb elf32-cr16.lo elf32.lo $elf" ;;
-    cr16c_elf32_vec)		 tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
     cris_aout_vec)		 tb="$tb aout-cris.lo" ;;
     cris_elf32_vec)		 tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     cris_elf32_us_vec)		 tb="$tb elf32-cris.lo elf32.lo $elf" ;;
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 39702ce..7eee83a 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -458,7 +458,6 @@ do
     bfin_elf32_vec)		 tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     bfin_elf32_fdpic_vec)	 tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
     cr16_elf32_vec)		 tb="$tb elf32-cr16.lo elf32.lo $elf" ;;
-    cr16c_elf32_vec)		 tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
     cris_aout_vec)		 tb="$tb aout-cris.lo" ;;
     cris_elf32_vec)		 tb="$tb elf32-cris.lo elf32.lo $elf" ;;
     cris_elf32_us_vec)		 tb="$tb elf32-cris.lo elf32.lo $elf" ;;
diff --git a/bfd/cpu-cr16c.c b/bfd/cpu-cr16c.c
deleted file mode 100644
index ed4a818..0000000
--- a/bfd/cpu-cr16c.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* BFD support for the CR16C processor.
-   Copyright (C) 2004-2019 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 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   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.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-
-const bfd_arch_info_type bfd_cr16c_arch =
-{
-  16,		/* Bits in a word.  */
-  32,		/* Bits in an address.  */
-  8,		/* Bits in a byte.  */
-  bfd_arch_cr16c,
-  bfd_mach_cr16c,
-  "cr16c",
-  "cr16c",
-  1,
-  TRUE,		/* The one and only.  */
-  bfd_default_compatible,
-  bfd_default_scan,
-  bfd_arch_default_fill,
-  NULL,
-  0 /* Maximum offset of a reloc from the start of an insn.  */
-};
diff --git a/bfd/elf32-cr16c.c b/bfd/elf32-cr16c.c
deleted file mode 100644
index 35bacbb..0000000
--- a/bfd/elf32-cr16c.c
+++ /dev/null
@@ -1,963 +0,0 @@
-/* BFD back-end for National Semiconductor's CR16C ELF
-   Copyright (C) 2004-2019 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 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   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.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "bfdlink.h"
-#include "elf/cr16c.h"
-#include "elf-bfd.h"
-
-
-#define USE_REL	1	/* CR16C uses REL relocations instead of RELA.  */
-
-/* The following definition is based on EMPTY_HOWTO macro,
-   but also initiates the "name" field in HOWTO struct.  */
-#define ONLY_NAME_HOWTO(C) \
-  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
-	  STRINGX(C), FALSE, 0, 0, FALSE)
-
-/* reloc_map_index array maps CRASM relocation type into a BFD
-   relocation enum. The array's indices are synchronized with
-   RINDEX_16C_* indices, created in include/elf/cr16c.h.
-   The array is used in:
-   1. elf32-cr16c.c : elf_cr16c_reloc_type_lookup().
-   2. asreloc.c : find_reloc_type(). */
-
-RELOC_MAP reloc_map_index[RINDEX_16C_MAX] =
-{
-  {R_16C_NUM08,     BFD_RELOC_16C_NUM08},
-  {R_16C_NUM08_C,   BFD_RELOC_16C_NUM08_C},
-  {R_16C_NUM16,     BFD_RELOC_16C_NUM16},
-  {R_16C_NUM16_C,   BFD_RELOC_16C_NUM16_C},
-  {R_16C_NUM32,     BFD_RELOC_16C_NUM32},
-  {R_16C_NUM32_C,   BFD_RELOC_16C_NUM32_C},
-  {R_16C_DISP04,    BFD_RELOC_16C_DISP04},
-  {R_16C_DISP04_C,  BFD_RELOC_16C_DISP04_C},
-  {R_16C_DISP08,    BFD_RELOC_16C_DISP08},
-  {R_16C_DISP08_C,  BFD_RELOC_16C_DISP08_C},
-  {R_16C_DISP16,    BFD_RELOC_16C_DISP16},
-  {R_16C_DISP16_C,  BFD_RELOC_16C_DISP16_C},
-  {R_16C_DISP24,    BFD_RELOC_16C_DISP24},
-  {R_16C_DISP24_C,  BFD_RELOC_16C_DISP24_C},
-  {R_16C_DISP24a,   BFD_RELOC_16C_DISP24a},
-  {R_16C_DISP24a_C, BFD_RELOC_16C_DISP24a_C},
-  {R_16C_REG04,     BFD_RELOC_16C_REG04},
-  {R_16C_REG04_C,   BFD_RELOC_16C_REG04_C},
-  {R_16C_REG04a,    BFD_RELOC_16C_REG04a},
-  {R_16C_REG04a_C,  BFD_RELOC_16C_REG04a_C},
-  {R_16C_REG14,     BFD_RELOC_16C_REG14},
-  {R_16C_REG14_C,   BFD_RELOC_16C_REG14_C},
-  {R_16C_REG16,     BFD_RELOC_16C_REG16},
-  {R_16C_REG16_C,   BFD_RELOC_16C_REG16_C},
-  {R_16C_REG20,     BFD_RELOC_16C_REG20},
-  {R_16C_REG20_C,   BFD_RELOC_16C_REG20_C},
-  {R_16C_ABS20,     BFD_RELOC_16C_ABS20},
-  {R_16C_ABS20_C,   BFD_RELOC_16C_ABS20_C},
-  {R_16C_ABS24,     BFD_RELOC_16C_ABS24},
-  {R_16C_ABS24_C,   BFD_RELOC_16C_ABS24_C},
-  {R_16C_IMM04,     BFD_RELOC_16C_IMM04},
-  {R_16C_IMM04_C,   BFD_RELOC_16C_IMM04_C},
-  {R_16C_IMM16,     BFD_RELOC_16C_IMM16},
-  {R_16C_IMM16_C,   BFD_RELOC_16C_IMM16_C},
-  {R_16C_IMM20,     BFD_RELOC_16C_IMM20},
-  {R_16C_IMM20_C,   BFD_RELOC_16C_IMM20_C},
-  {R_16C_IMM24,     BFD_RELOC_16C_IMM24},
-  {R_16C_IMM24_C,   BFD_RELOC_16C_IMM24_C},
-  {R_16C_IMM32,     BFD_RELOC_16C_IMM32},
-  {R_16C_IMM32_C,   BFD_RELOC_16C_IMM32_C}
-};
-
-static reloc_howto_type elf_howto_table[] =
-{
-  /* 00 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM08),
-  /* 01 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM08_C),
-  /* 02 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM16),
-  /* 03 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM16_C),
-  /* 04 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM32),
-  /* 05 */ ONLY_NAME_HOWTO (RINDEX_16C_NUM32_C),
-  /* 06 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP04),
-  /* 07 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP04_C),
-  /* 08 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP08),
-  /* 09 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP08_C),
-  /* 10 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP16),
-  /* 11 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP16_C),
-  /* 12 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP24),
-  /* 13 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP24_C),
-  /* 14 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP24a),
-  /* 15 */ ONLY_NAME_HOWTO (RINDEX_16C_DISP24a_C),
-  /* 16 */ ONLY_NAME_HOWTO (RINDEX_16C_REG04),
-  /* 17 */ ONLY_NAME_HOWTO (RINDEX_16C_REG04_C),
-  /* 18 */ ONLY_NAME_HOWTO (RINDEX_16C_REG04a),
-  /* 19 */ ONLY_NAME_HOWTO (RINDEX_16C_REG04a_C),
-  /* 20 */ ONLY_NAME_HOWTO (RINDEX_16C_REG14),
-  /* 21 */ ONLY_NAME_HOWTO (RINDEX_16C_REG14_C),
-  /* 22 */ ONLY_NAME_HOWTO (RINDEX_16C_REG16),
-  /* 23 */ ONLY_NAME_HOWTO (RINDEX_16C_REG16_C),
-  /* 24 */ ONLY_NAME_HOWTO (RINDEX_16C_REG20),
-  /* 25 */ ONLY_NAME_HOWTO (RINDEX_16C_REG20_C),
-  /* 26 */ ONLY_NAME_HOWTO (RINDEX_16C_ABS20),
-  /* 27 */ ONLY_NAME_HOWTO (RINDEX_16C_ABS20_C),
-  /* 28 */ ONLY_NAME_HOWTO (RINDEX_16C_ABS24),
-  /* 29 */ ONLY_NAME_HOWTO (RINDEX_16C_ABS24_C),
-  /* 30 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM04),
-  /* 31 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM04_C),
-  /* 32 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM16),
-  /* 33 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM16_C),
-  /* 34 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM20),
-  /* 35 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM20_C),
-  /* 36 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM24),
-  /* 37 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM24_C),
-  /* 38 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM32),
-  /* 39 */ ONLY_NAME_HOWTO (RINDEX_16C_IMM32_C)
-};
-
-
-/* Code to turn a code_type into a howto ptr, uses the above howto table.  */
-
-static reloc_howto_type *
-elf_cr16c_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			     bfd_reloc_code_real_type code)
-{
-  unsigned int i;
-
-  for (i = 0; i < RINDEX_16C_MAX; i++)
-    {
-      if (code == reloc_map_index[i].bfd_reloc_enum)
-	{
-	  /* printf ("CR16C Relocation Type is - %x\n", code); */
-	  return & elf_howto_table[i];
-	}
-    }
-
-  /* printf ("This relocation Type is not supported - %x\n", code); */
-  return 0;
-}
-
-static reloc_howto_type *
-elf_cr16c_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			     const char *r_name)
-{
-  unsigned int i;
-
-  for (i = 0; i < sizeof (elf_howto_table) / sizeof (elf_howto_table[0]); i++)
-    if (elf_howto_table[i].name != NULL
-	&& strcasecmp (elf_howto_table[i].name, r_name) == 0)
-      return &elf_howto_table[i];
-
-  return NULL;
-}
-
-static bfd_boolean
-elf_cr16c_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
-			 arelent *cache_ptr ATTRIBUTE_UNUSED,
-			 Elf_Internal_Rela *dst ATTRIBUTE_UNUSED)
-{
-  return FALSE;
-}
-
-static bfd_boolean
-elf_cr16c_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
-			     arelent *cache_ptr,
-			     Elf_Internal_Rela *dst)
-{
-  unsigned int r_type = ELF32_R_TYPE (dst->r_info);
-
-  if (r_type >= RINDEX_16C_MAX)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			  abfd, r_type);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
-    }
-  cache_ptr->howto = &elf_howto_table[r_type];
-  return TRUE;
-}
-
-/* Perform a relocation as part of a final link.  */
-
-static bfd_reloc_status_type
-cr16c_elf_final_link_relocate (reloc_howto_type *howto,
-			       bfd *abfd,
-			       bfd *output_bfd ATTRIBUTE_UNUSED,
-			       asection *input_section,
-			       bfd_byte *data,
-			       bfd_vma octets,
-			       bfd_vma Rvalue,
-			       bfd_vma addend ATTRIBUTE_UNUSED,
-			       struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			       asection *sym_sec ATTRIBUTE_UNUSED,
-			       int is_local ATTRIBUTE_UNUSED)
-{
-  long value;
-  short sword;			/* Extracted from the hole and put back.  */
-  unsigned long format, addr_type, code_factor;
-  unsigned short size;
-  unsigned short r_type;
-
-  unsigned long disp20_opcod;
-  char neg = 0;
-  char neg2pos = 0;
-
-  long left_val = 0;
-  long plus_factor = 0;		/* To be added to the hole.  */
-
-#define MIN_BYTE	((int) 0xFFFFFF80)
-#define MIN_WORD	((int) 0xFFFF8000)
-#define	MAX_UWORD	((unsigned) 0x0000FFFF)
-#define	MAX_UBYTE	((unsigned) 0x000000FF)
-
-  r_type = reloc_map_index[howto->type].cr_reloc_type;
-  format = r_type & R_FORMAT;
-  size = r_type & R_SIZESP;
-  addr_type = r_type & R_ADDRTYPE;
-  code_factor = ((addr_type == R_CODE_ADDR) ? 1 : 0);
-
-  switch (format)
-    {
-    case R_NUMBER:
-      switch (size)
-	{
-	case R_S_16C_08:	/* One byte.  */
-	  value = bfd_get_8 (abfd, (char *) data + octets);
-	  break;
-	case R_S_16C_16:	/* Two bytes. */
-	  sword = bfd_get_16 (abfd, (bfd_byte *) data + octets);
-	  value = sword;
-	  break;
-	case R_S_16C_32:	/* Four bytes.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  break;
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_DISPL:
-      switch (size)
-	{
-	case R_S_16C_04:    /* word1(4-7).  */
-	  value = bfd_get_8 (abfd, (char *) data + octets);
-	  left_val = value & 0xF;
-	  value = (value & 0xF0) >> 4;
-	  value++;
-	  value <<= 1;
-	  break;
-	case R_S_16C_08:    /* word1(0-3,8-11).  */
-	  sword = bfd_get_16 (abfd, (char *) data + octets);
-	  value = sword & 0x000F;
-	  value |= ((sword & 0x0F00) >> 4);
-	  left_val = sword & 0xF0F0;
-	  value <<= 1;
-	  if (value & 0x100)
-	    value |= 0xFFFFFF00;
-	  break;
-	case R_S_16C_16:    /* word2.  */
-	  sword = bfd_get_16 (abfd, (bfd_byte *) data + octets);
-	  value = sword;
-	  value = ((value & 0xFFFE) >> 1) | ((value & 0x1) << 15);
-	  value <<= 1;
-	  if (value & 0x10000)
-	    value |= 0xFFFF0000;
-	  break;
-	case R_S_16C_24_a:	/* word1(0-7),word2.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x0000FF00;
-	  value = ((value & 0xFFFE0000) >> 17) |
-	    ((value & 0x00010000) << 7) | ((value & 0x000000FF) << 15);
-	  value <<= 1;
-	  if (value & 0x1000000)
-	    value |= 0xFE000000;
-	  break;
-	case R_S_16C_24:    /* word2(0-3,8-11),word3.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x0000F0F0;
-	  value = ((value >> 16) & 0x0000FFFF) |
-	    ((value & 0x00000F00) << 8) | ((value & 0x0000000F) << 20);
-
-	  value = ((value & 0x00FFFFFE) >> 1) | ((value & 0x00000001) << 23);
-
-	  value <<= 1;
-	  if (value & 0x1000000)
-	    value |= 0xFE000000;
-	  break;
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_REGREL:
-      switch (size)
-	{
-	case R_S_16C_04:    /* word1(12-15) not scaled.  */
-	  value = bfd_get_8 (abfd, (char *) data + octets);
-	  left_val = value & 0xF0;
-	  value = value & 0xF;
-	  break;
-	case R_S_16C_04_a:	/* word1(12-15) scaled by 2.  */
-	  value = bfd_get_8 (abfd, (char *) data + octets);
-	  left_val = value & 0xF0;
-	  value = value & 0xF;
-	  value <<= 1;
-	  break;
-	case R_S_16C_14:    /* word1(4-5),word2(0-3,8-15).  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x00F0FFCF;
-	  value = ((value & 0xc0000000) >> 24) |
-	    ((value & 0x3F000000) >> 16) |
-	    ((value & 0x000F0000) >> 16) | (value & 0x00000030);
-	  break;
-	case R_S_16C_16:    /* word2.  */
-	  sword = bfd_get_16 (abfd, (bfd_byte *) data + octets);
-	  value = sword;
-	  break;
-	case R_S_16C_20:    /* word2(8-11),word3.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0xF0;
-	  value = (value & 0xF) << 16;
-	  sword = bfd_get_16 (abfd, (bfd_byte *) data + octets + 1);
-	  value = value | (unsigned short) sword;
-	  disp20_opcod = bfd_get_32 (abfd, (bfd_byte *) data + octets - 3);
-	  disp20_opcod |= 0x0FFF0000;
-	  if ((disp20_opcod == 0x4FFF0018) ||	/* loadb -disp20(reg) */
-	      (disp20_opcod == 0x5FFF0018) ||	/* loadb -disp20(rp)  */
-	      (disp20_opcod == 0x8FFF0018) ||	/* loadd -disp20(reg) */
-	      (disp20_opcod == 0x9FFF0018) ||	/* loadd -disp20(rp)  */
-	      (disp20_opcod == 0xCFFF0018) ||	/* loadw -disp20(reg) */
-	      (disp20_opcod == 0xDFFF0018) ||	/* loadw -disp20(rp)  */
-	      (disp20_opcod == 0x4FFF0019) ||	/* storb -disp20(reg) */
-	      (disp20_opcod == 0x5FFF0019) ||	/* storb -disp20(rp)  */
-	      (disp20_opcod == 0x8FFF0019) ||	/* stord -disp20(reg) */
-	      (disp20_opcod == 0x9FFF0019) ||	/* stord -disp20(rp)  */
-	      (disp20_opcod == 0xCFFF0019) ||	/* storw -disp20(reg) */
-	      (disp20_opcod == 0xDFFF0019))
-	    {	/* storw -disp20(rp).  */
-	      neg = 1;
-	      value |= 0xFFF00000;
-	    }
-
-	  break;
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_ABS:
-      switch (size)
-	{
-	case R_S_16C_20:    /* word1(0-3),word2.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x0000FFF0;
-	  value = ((value & 0xFFFF0000) >> 16) |
-	    ((value & 0x0000000F) << 16);
-	  break;
-	case R_S_16C_24:   /* word2(0-3,8-11),word3.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x0000F0F0;
-	  value = ((value & 0xFFFF0000) >> 16) |
-	    ((value & 0x00000F00) << 8) | ((value & 0x0000000F) << 20);
-	  break;
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_IMMED:
-      switch (size)
-	{
-	case R_S_16C_04:    /* word1/2(4-7).  */
-	  value = bfd_get_8 (abfd, (char *) data + octets);
-	  left_val = value & 0xF;
-	  value = (value & 0xF0) >> 4;
-	  break;
-	case R_S_16C_16:    /* word2.  */
-	  sword = bfd_get_16 (abfd, (bfd_byte *) data + octets);
-	  value = sword;
-	  break;
-	case R_S_16C_20:    /* word1(0-3),word2.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  left_val = value & 0x0000FFF0;
-	  value = ((value & 0xFFFF0000) >> 16) |
-	    ((value & 0x0000000F) << 16);
-	  break;
-	case R_S_16C_32:    /* word2, word3.  */
-	  value = bfd_get_32 (abfd, (bfd_byte *) data + octets);
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0xFFFF0000) >> 16);
-	  break;
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-    default:
-      return bfd_reloc_notsupported;
-    }
-
-  switch ((r_type & R_RELTO) >> 4)
-    {
-
-    case 0:	/* R_ABS.  */
-      plus_factor = Rvalue;
-      break;
-    case 1:	/* R_PCREL.  */
-      plus_factor = Rvalue -
-	(input_section->output_section->vma + input_section->output_offset);
-      break;
-    default:
-      return bfd_reloc_notsupported;
-    }
-
-  if (neg)
-    {
-      if (plus_factor >= -value)
-	neg2pos = 1;
-      /* We need to change load/stor with negative
-	 displ opcode to positive disp opcode (CR16C).  */
-    }
-
-  value = value + (plus_factor >> code_factor);
-
-  switch (format)
-    {
-    case R_NUMBER:
-      switch (size)
-	{
-	case R_S_16C_08:	/* One byte.  */
-	  if (value > (int) MAX_UBYTE || value < MIN_BYTE)
-	    return bfd_reloc_overflow;
-	  value &= 0xFF;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_16:	/* Two bytes.  */
-	  if (value > (int) MAX_UWORD || value < MIN_WORD)
-	    return bfd_reloc_overflow;
-	  value &= 0xFFFF;
-	  sword = value;
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_32:	/* Four bytes.  */
-	  value &= 0xFFFFFFFF;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_DISPL:
-      switch (size)
-	{
-	case R_S_16C_04:	/* word1(4-7).  */
-	  if ((value - 32) > 32 || value < 2)
-	    return bfd_reloc_overflow;
-	  value >>= 1;
-	  value--;
-	  value &= 0xF;
-	  value <<= 4;
-	  value |= left_val;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_08:    /* word1(0-3,8-11).  */
-	  if (value > 255 || value < -256 || value == 0x80)
-	    return bfd_reloc_overflow;
-	  value &= 0x1FF;
-	  value >>= 1;
-	  sword = value & 0x000F;
-	  sword |= (value & 0x00F0) << 4;
-	  sword |= left_val;
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_16:    /* word2.  */
-	  if (value > 65535 || value < -65536)
-	    return bfd_reloc_overflow;
-	  value >>= 1;
-	  value &= 0xFFFF;
-	  value = ((value & 0x8000) >> 15) | ((value & 0x7FFF) << 1);
-	  sword = value;
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_24_a:	/* word1(0-7),word2.  */
-	  if (value > 16777215 || value < -16777216)
-	    return bfd_reloc_overflow;
-	  value &= 0x1FFFFFF;
-	  value >>= 1;
-	  value = ((value & 0x00007FFF) << 17) |
-	    ((value & 0x00800000) >> 7) | ((value & 0x007F8000) >> 15);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	case R_S_16C_24:    /* word2(0-3,8-11),word3.  */
-	  if (value > 16777215 || value < -16777216)
-	    return bfd_reloc_overflow;
-	  value &= 0x1FFFFFF;
-	  value >>= 1;
-
-	  value = ((value & 0x007FFFFF) << 1) | ((value & 0x00800000) >> 23);
-
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0x000F0000) >> 8) | ((value & 0x00F00000) >> 20);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_REGREL:
-      switch (size)
-	{
-	case R_S_16C_04:	/* word1(12-15) not scaled.  */
-	  if (value > 13 || value < 0)
-	    return bfd_reloc_overflow;
-	  value &= 0xF;
-	  value |= left_val;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_04_a:	/* word1(12-15) not scaled.  */
-	  if (value > 26 || value < 0)
-	    return bfd_reloc_overflow;
-	  value &= 0x1F;
-	  value >>= 1;
-	  value |= left_val;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_14:	/* word1(4-5),word2(0-3,8-15).  */
-	  if (value < 0 || value > 16383)
-	    return bfd_reloc_overflow;
-	  value &= 0x3FFF;
-	  value = ((value & 0x000000c0) << 24) |
-	    ((value & 0x00003F00) << 16) |
-	    ((value & 0x0000000F) << 16) | (value & 0x00000030);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	case R_S_16C_16:	/* word2.  */
-	  if (value > 65535 || value < 0)
-	    return bfd_reloc_overflow;
-	  value &= 0xFFFF;
-	  sword = value;
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_20:	/* word2(8-11),word3.  */
-	  /* if (value > 1048575 || value < 0) RELOC_ERROR(1); */
-	  value &= 0xFFFFF;
-	  sword = value & 0x0000FFFF;
-	  value = (value & 0x000F0000) >> 16;
-	  value |= left_val;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets + 1);
-	  if (neg2pos)
-	    {
-	      /* Change load/stor negative displ opcode
-		 to load/stor positive displ opcode.  */
-	      value = bfd_get_8 (abfd, (char *) data + octets - 3);
-	      value &= 0xF7;
-	      value |= 0x2;
-	      bfd_put_8 (abfd, (bfd_vma) value,
-			 (unsigned char *) data + octets - 3);
-	    }
-	  break;
-
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_ABS:
-      switch (size)
-	{
-	case R_S_16C_20:	/* word1(0-3),word2.  */
-	  if (value > 1048575 || value < 0)
-	    return bfd_reloc_overflow;
-	  value &= 0xFFFFF;
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0x000F0000) >> 16);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	case R_S_16C_24:	/* word2(0-3,8-11),word3.  */
-	  /* if (value > 16777215 || value < 0) RELOC_ERROR(1); */
-	  value &= 0xFFFFFF;
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0x000F0000) >> 8) | ((value & 0x00F00000) >> 20);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-
-    case R_16C_IMMED:
-      switch (size)
-	{
-	case R_S_16C_04:	/* word1/2(4-7).  */
-	  if (value > 15 || value < -1)
-	    return bfd_reloc_overflow;
-	  value &= 0xF;
-	  value <<= 4;
-	  value |= left_val;
-	  bfd_put_8 (abfd, (bfd_vma) value, (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_16:	/* word2.  */
-	  if (value > 32767 || value < -32768)
-	    return bfd_reloc_overflow;
-	  value &= 0xFFFF;
-	  sword = value;
-	  bfd_put_16 (abfd, (bfd_vma) sword,
-		      (unsigned char *) data + octets);
-	  break;
-
-	case R_S_16C_20:	/* word1(0-3),word2.  */
-	  if (value > 1048575 || value < 0)
-	    return bfd_reloc_overflow;
-	  value &= 0xFFFFF;
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0x000F0000) >> 16);
-	  value |= left_val;
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	case R_S_16C_32:	/* word2, word3.  */
-	  value &= 0xFFFFFFFF;
-	  value = ((value & 0x0000FFFF) << 16) |
-	    ((value & 0xFFFF0000) >> 16);
-	  bfd_put_32 (abfd, (bfd_vma) value, (bfd_byte *) data + octets);
-	  break;
-
-	default:
-	  return bfd_reloc_notsupported;
-	}
-      break;
-    default:
-      return bfd_reloc_notsupported;
-    }
-
-  return bfd_reloc_ok;
-}
-
-/* Relocate a CR16C ELF section.  */
-
-static bfd_boolean
-elf32_cr16c_relocate_section (bfd *output_bfd,
-			      struct bfd_link_info *info,
-			      bfd *input_bfd,
-			      asection *input_section,
-			      bfd_byte *contents,
-			      Elf_Internal_Rela *relocs,
-			      Elf_Internal_Sym *local_syms,
-			      asection **local_sections)
-{
-  Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes;
-  Elf_Internal_Rela *rel, *relend;
-
-  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-  sym_hashes = elf_sym_hashes (input_bfd);
-
-  rel = relocs;
-  relend = relocs + input_section->reloc_count;
-  for (; rel < relend; rel++)
-    {
-      int r_type;
-      reloc_howto_type *howto;
-      unsigned long r_symndx;
-      Elf_Internal_Sym *sym;
-      asection *sec;
-      struct elf_link_hash_entry *h;
-      bfd_vma relocation;
-      bfd_reloc_status_type r;
-
-      r_symndx = ELF32_R_SYM (rel->r_info);
-      r_type = ELF32_R_TYPE (rel->r_info);
-      howto = elf_howto_table + r_type;
-
-      h = NULL;
-      sym = NULL;
-      sec = NULL;
-      if (r_symndx < symtab_hdr->sh_info)
-	{
-	  sym = local_syms + r_symndx;
-	  sec = local_sections[r_symndx];
-	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
-	}
-      else
-	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
-
-	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
-				   r_symndx, symtab_hdr, sym_hashes,
-				   h, sec, relocation,
-				   unresolved_reloc, warned, ignored);
-	}
-
-      if (sec != NULL && discarded_section (sec))
-	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
-
-      if (bfd_link_relocatable (info))
-	{
-	  /* This is a relocatable link.  We don't have to change
-	     anything, unless the reloc is against a section symbol,
-	     in which case we have to adjust according to where the
-	     section symbol winds up in the output section.  */
-	  if (sym != NULL && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
-	    rel->r_addend += sec->output_offset;
-	  continue;
-	}
-
-      r = cr16c_elf_final_link_relocate (howto, input_bfd, output_bfd,
-					 input_section,
-					 contents, rel->r_offset,
-					 relocation, rel->r_addend,
-					 info, sec, h == NULL);
-
-      if (r != bfd_reloc_ok)
-	{
-	  const char *name;
-	  const char *msg = (const char *) 0;
-
-	  if (h != NULL)
-	    name = h->root.root.string;
-	  else
-	    {
-	      name = (bfd_elf_string_from_elf_section
-		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
-	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (sec);
-	    }
-
-	  switch (r)
-	    {
-	    case bfd_reloc_overflow:
-	      (*info->callbacks->reloc_overflow)
-		(info, (h ? &h->root : NULL), name, howto->name,
-		 (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
-	      break;
-
-	    case bfd_reloc_undefined:
-	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
-	      break;
-
-	    case bfd_reloc_outofrange:
-	      msg = _("internal error: out of range error");
-	      goto common_error;
-
-	    case bfd_reloc_notsupported:
-	      msg = _("internal error: unsupported relocation error");
-	      goto common_error;
-
-	    case bfd_reloc_dangerous:
-	      msg = _("internal error: dangerous error");
-	      goto common_error;
-
-	    default:
-	      msg = _("internal error: unknown error");
-	      /* fall through */
-
-	    common_error:
-	      (*info->callbacks->warning) (info, msg, name, input_bfd,
-					   input_section, rel->r_offset);
-	      break;
-	    }
-	}
-    }
-
-  return TRUE;
-}
-
-/* CR16C ELF uses three common sections:
-   One is for default common symbols (placed in usual common section).
-   Second is for near common symbols (placed in "ncommon" section).
-   Third is for far common symbols (placed in "fcommon" section).
-   The following implementation is based on elf32-mips architecture */
-
-static asection  cr16c_elf_fcom_section;
-static asymbol   cr16c_elf_fcom_symbol;
-static asymbol * cr16c_elf_fcom_symbol_ptr;
-static asection  cr16c_elf_ncom_section;
-static asymbol   cr16c_elf_ncom_symbol;
-static asymbol * cr16c_elf_ncom_symbol_ptr;
-
-/* Given a BFD section, try to locate the
-   corresponding ELF section index.  */
-
-static bfd_boolean
-elf32_cr16c_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
-				      asection *sec,
-				      int *retval)
-{
-  if (strcmp (bfd_section_name (sec), ".fcommon") == 0)
-    *retval = SHN_CR16C_FCOMMON;
-  else if (strcmp (bfd_section_name (sec), ".ncommon") == 0)
-    *retval = SHN_CR16C_NCOMMON;
-  else
-    return FALSE;
-
-  return TRUE;
-}
-
-/* Handle the special CR16C section numbers that a symbol may use.  */
-
-static void
-elf32_cr16c_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED,
-			       asymbol *asym)
-{
-  elf_symbol_type *elfsym = (elf_symbol_type *) asym;
-  unsigned int indx;
-
-  indx = elfsym->internal_elf_sym.st_shndx;
-
-  switch (indx)
-    {
-    case SHN_CR16C_FCOMMON:
-      if (cr16c_elf_fcom_section.name == NULL)
-	{
-	  /* Initialize the far common section.  */
-	  cr16c_elf_fcom_section.name = ".fcommon";
-	  cr16c_elf_fcom_section.flags = SEC_IS_COMMON | SEC_ALLOC;
-	  cr16c_elf_fcom_section.output_section = &cr16c_elf_fcom_section;
-	  cr16c_elf_fcom_section.symbol = &cr16c_elf_fcom_symbol;
-	  cr16c_elf_fcom_section.symbol_ptr_ptr = &cr16c_elf_fcom_symbol_ptr;
-	  cr16c_elf_fcom_symbol.name = ".fcommon";
-	  cr16c_elf_fcom_symbol.flags = BSF_SECTION_SYM;
-	  cr16c_elf_fcom_symbol.section = &cr16c_elf_fcom_section;
-	  cr16c_elf_fcom_symbol_ptr = &cr16c_elf_fcom_symbol;
-	}
-      asym->section = &cr16c_elf_fcom_section;
-      asym->value = elfsym->internal_elf_sym.st_size;
-      break;
-    case SHN_CR16C_NCOMMON:
-      if (cr16c_elf_ncom_section.name == NULL)
-	{
-	  /* Initialize the far common section.  */
-	  cr16c_elf_ncom_section.name = ".ncommon";
-	  cr16c_elf_ncom_section.flags = SEC_IS_COMMON | SEC_ALLOC;
-	  cr16c_elf_ncom_section.output_section = &cr16c_elf_ncom_section;
-	  cr16c_elf_ncom_section.symbol = &cr16c_elf_ncom_symbol;
-	  cr16c_elf_ncom_section.symbol_ptr_ptr = &cr16c_elf_ncom_symbol_ptr;
-	  cr16c_elf_ncom_symbol.name = ".ncommon";
-	  cr16c_elf_ncom_symbol.flags = BSF_SECTION_SYM;
-	  cr16c_elf_ncom_symbol.section = &cr16c_elf_ncom_section;
-	  cr16c_elf_ncom_symbol_ptr = &cr16c_elf_ncom_symbol;
-	}
-      asym->section = &cr16c_elf_ncom_section;
-      asym->value = elfsym->internal_elf_sym.st_size;
-      break;
-    }
-}
-
-/* Hook called by the linker routine which adds symbols from an object
-   file.  We must handle the special cr16c section numbers here.  */
-
-static bfd_boolean
-elf32_cr16c_add_symbol_hook (bfd *abfd,
-			     struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			     Elf_Internal_Sym *sym,
-			     const char **namep ATTRIBUTE_UNUSED,
-			     flagword *flagsp ATTRIBUTE_UNUSED,
-			     asection **secp,
-			     bfd_vma *valp)
-{
-  unsigned int indx = sym->st_shndx;
-
-  switch (indx)
-    {
-    case SHN_CR16C_FCOMMON:
-      *secp = bfd_make_section_old_way (abfd, ".fcommon");
-      (*secp)->flags |= SEC_IS_COMMON;
-      *valp = sym->st_size;
-      break;
-    case SHN_CR16C_NCOMMON:
-      *secp = bfd_make_section_old_way (abfd, ".ncommon");
-      (*secp)->flags |= SEC_IS_COMMON;
-      *valp = sym->st_size;
-      break;
-    }
-
-  return TRUE;
-}
-
-static int
-elf32_cr16c_link_output_symbol_hook (struct bfd_link_info *info ATTRIBUTE_UNUSED,
-				     const char *name ATTRIBUTE_UNUSED,
-				     Elf_Internal_Sym *sym,
-				     asection *input_sec,
-				     struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
-{
-  /* If we see a common symbol, which implies a relocatable link, then
-     if a symbol was in a special common section in an input file, mark
-     it as a special common in the output file.  */
-
-  if (sym->st_shndx == SHN_COMMON)
-    {
-      if (strcmp (input_sec->name, ".fcommon") == 0)
-	sym->st_shndx = SHN_CR16C_FCOMMON;
-      else if (strcmp (input_sec->name, ".ncommon") == 0)
-	sym->st_shndx = SHN_CR16C_NCOMMON;
-    }
-
-  return 1;
-}
-
-/* Definitions for setting CR16C target vector.  */
-#define TARGET_LITTLE_SYM		cr16c_elf32_vec
-#define TARGET_LITTLE_NAME		"elf32-cr16c"
-#define ELF_ARCH			bfd_arch_cr16c
-#define ELF_MACHINE_CODE		EM_CR
-#define ELF_MAXPAGESIZE			0x1
-#define elf_symbol_leading_char		'_'
-
-#define bfd_elf32_bfd_reloc_type_lookup		elf_cr16c_reloc_type_lookup
-#define bfd_elf32_bfd_reloc_name_lookup	elf_cr16c_reloc_name_lookup
-#define elf_info_to_howto			elf_cr16c_info_to_howto
-#define elf_info_to_howto_rel			elf_cr16c_info_to_howto_rel
-#define elf_backend_relocate_section		elf32_cr16c_relocate_section
-#define elf_backend_symbol_processing		elf32_cr16c_symbol_processing
-#define elf_backend_section_from_bfd_section	elf32_cr16c_section_from_bfd_section
-#define elf_backend_add_symbol_hook		elf32_cr16c_add_symbol_hook
-#define elf_backend_link_output_symbol_hook	elf32_cr16c_link_output_symbol_hook
-
-#define elf_backend_can_gc_sections     1
-
-#include "elf32-target.h"
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 2ea167e..77b732e 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -2579,46 +2579,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_M68HC12_LO8XG",
   "BFD_RELOC_M68HC12_HI8XG",
   "BFD_RELOC_S12Z_15_PCREL",
-  "BFD_RELOC_16C_NUM08",
-  "BFD_RELOC_16C_NUM08_C",
-  "BFD_RELOC_16C_NUM16",
-  "BFD_RELOC_16C_NUM16_C",
-  "BFD_RELOC_16C_NUM32",
-  "BFD_RELOC_16C_NUM32_C",
-  "BFD_RELOC_16C_DISP04",
-  "BFD_RELOC_16C_DISP04_C",
-  "BFD_RELOC_16C_DISP08",
-  "BFD_RELOC_16C_DISP08_C",
-  "BFD_RELOC_16C_DISP16",
-  "BFD_RELOC_16C_DISP16_C",
-  "BFD_RELOC_16C_DISP24",
-  "BFD_RELOC_16C_DISP24_C",
-  "BFD_RELOC_16C_DISP24a",
-  "BFD_RELOC_16C_DISP24a_C",
-  "BFD_RELOC_16C_REG04",
-  "BFD_RELOC_16C_REG04_C",
-  "BFD_RELOC_16C_REG04a",
-  "BFD_RELOC_16C_REG04a_C",
-  "BFD_RELOC_16C_REG14",
-  "BFD_RELOC_16C_REG14_C",
-  "BFD_RELOC_16C_REG16",
-  "BFD_RELOC_16C_REG16_C",
-  "BFD_RELOC_16C_REG20",
-  "BFD_RELOC_16C_REG20_C",
-  "BFD_RELOC_16C_ABS20",
-  "BFD_RELOC_16C_ABS20_C",
-  "BFD_RELOC_16C_ABS24",
-  "BFD_RELOC_16C_ABS24_C",
-  "BFD_RELOC_16C_IMM04",
-  "BFD_RELOC_16C_IMM04_C",
-  "BFD_RELOC_16C_IMM16",
-  "BFD_RELOC_16C_IMM16_C",
-  "BFD_RELOC_16C_IMM20",
-  "BFD_RELOC_16C_IMM20_C",
-  "BFD_RELOC_16C_IMM24",
-  "BFD_RELOC_16C_IMM24_C",
-  "BFD_RELOC_16C_IMM32",
-  "BFD_RELOC_16C_IMM32_C",
   "BFD_RELOC_CR16_NUM8",
   "BFD_RELOC_CR16_NUM16",
   "BFD_RELOC_CR16_NUM32",
diff --git a/bfd/po/SRC-POTFILES.in b/bfd/po/SRC-POTFILES.in
index 1c79d72..04c4c07 100644
--- a/bfd/po/SRC-POTFILES.in
+++ b/bfd/po/SRC-POTFILES.in
@@ -53,7 +53,6 @@ cpu-avr.c
 cpu-bfin.c
 cpu-bpf.c
 cpu-cr16.c
-cpu-cr16c.c
 cpu-cris.c
 cpu-crx.c
 cpu-csky.c
@@ -165,7 +164,6 @@ elf32-bfin.c
 elf32-bfin.h
 elf32-cr16.c
 elf32-cr16.h
-elf32-cr16c.c
 elf32-cris.c
 elf32-crx.c
 elf32-csky.c
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 0c67ecd..ae71f6b 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -5945,88 +5945,6 @@ ENUMDOC
   Freescale S12Z reloc.
   This is a 15 bit relative address.  If the most significant bits are all zero
   then it may be truncated to 8 bits.
-ENUM
-  BFD_RELOC_16C_NUM08
-ENUMX
-  BFD_RELOC_16C_NUM08_C
-ENUMX
-  BFD_RELOC_16C_NUM16
-ENUMX
-  BFD_RELOC_16C_NUM16_C
-ENUMX
-  BFD_RELOC_16C_NUM32
-ENUMX
-  BFD_RELOC_16C_NUM32_C
-ENUMX
-  BFD_RELOC_16C_DISP04
-ENUMX
-  BFD_RELOC_16C_DISP04_C
-ENUMX
-  BFD_RELOC_16C_DISP08
-ENUMX
-  BFD_RELOC_16C_DISP08_C
-ENUMX
-  BFD_RELOC_16C_DISP16
-ENUMX
-  BFD_RELOC_16C_DISP16_C
-ENUMX
-  BFD_RELOC_16C_DISP24
-ENUMX
-  BFD_RELOC_16C_DISP24_C
-ENUMX
-  BFD_RELOC_16C_DISP24a
-ENUMX
-  BFD_RELOC_16C_DISP24a_C
-ENUMX
-  BFD_RELOC_16C_REG04
-ENUMX
-  BFD_RELOC_16C_REG04_C
-ENUMX
-  BFD_RELOC_16C_REG04a
-ENUMX
-  BFD_RELOC_16C_REG04a_C
-ENUMX
-  BFD_RELOC_16C_REG14
-ENUMX
-  BFD_RELOC_16C_REG14_C
-ENUMX
-  BFD_RELOC_16C_REG16
-ENUMX
-  BFD_RELOC_16C_REG16_C
-ENUMX
-  BFD_RELOC_16C_REG20
-ENUMX
-  BFD_RELOC_16C_REG20_C
-ENUMX
-  BFD_RELOC_16C_ABS20
-ENUMX
-  BFD_RELOC_16C_ABS20_C
-ENUMX
-  BFD_RELOC_16C_ABS24
-ENUMX
-  BFD_RELOC_16C_ABS24_C
-ENUMX
-  BFD_RELOC_16C_IMM04
-ENUMX
-  BFD_RELOC_16C_IMM04_C
-ENUMX
-  BFD_RELOC_16C_IMM16
-ENUMX
-  BFD_RELOC_16C_IMM16_C
-ENUMX
-  BFD_RELOC_16C_IMM20
-ENUMX
-  BFD_RELOC_16C_IMM20_C
-ENUMX
-  BFD_RELOC_16C_IMM24
-ENUMX
-  BFD_RELOC_16C_IMM24_C
-ENUMX
-  BFD_RELOC_16C_IMM32
-ENUMX
-  BFD_RELOC_16C_IMM32_C
-ENUMDOC
-  NS CR16C Relocations.
 
 ENUM
   BFD_RELOC_CR16_NUM8
diff --git a/bfd/targets.c b/bfd/targets.c
index 717657f..fb0c669 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -697,7 +697,6 @@ extern const bfd_target avr_elf32_vec;
 extern const bfd_target bfin_elf32_vec;
 extern const bfd_target bfin_elf32_fdpic_vec;
 extern const bfd_target cr16_elf32_vec;
-extern const bfd_target cr16c_elf32_vec;
 extern const bfd_target cris_aout_vec;
 extern const bfd_target cris_elf32_vec;
 extern const bfd_target cris_elf32_us_vec;
@@ -1029,7 +1028,6 @@ static const bfd_target * const _bfd_target_vector[] =
 	&bfin_elf32_fdpic_vec,
 
 	&cr16_elf32_vec,
-	&cr16c_elf32_vec,
 
 	&cris_aout_vec,
 	&cris_elf32_vec,
diff --git a/include/ChangeLog b/include/ChangeLog
index 44c71a7..64e59d9 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2019-11-07  Alan Modra  <amodra@gmail.com>
+
+	* elf/cr16c.h: Delete.
+
 2019-10-29  Andrew Eikum  <aeikum@codeweavers.com>
 
 	* coff/internal.h (struct internal_extra_pe_filehdr): Use ints
diff --git a/include/elf/cr16c.h b/include/elf/cr16c.h
deleted file mode 100644
index 523e548..0000000
--- a/include/elf/cr16c.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/* CR16C ELF support for BFD.
-   Copyright (C) 2004-2019 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 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   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.  */
-
-#ifndef _ELF_CR16C_H
-#define _ELF_CR16C_H
-
-#include "bfd.h"
-#include "elf/reloc-macros.h"
-
-/* Creating indices for reloc_map_index array.  */
-START_RELOC_NUMBERS (elf_cr16c_reloc_type)
-     RELOC_NUMBER (RINDEX_16C_NUM08,		0)
-     RELOC_NUMBER (RINDEX_16C_NUM08_C,		1)
-     RELOC_NUMBER (RINDEX_16C_NUM16,		2)
-     RELOC_NUMBER (RINDEX_16C_NUM16_C,		3)
-     RELOC_NUMBER (RINDEX_16C_NUM32,		4)
-     RELOC_NUMBER (RINDEX_16C_NUM32_C,		5)
-     RELOC_NUMBER (RINDEX_16C_DISP04,		6)
-     RELOC_NUMBER (RINDEX_16C_DISP04_C,		7)
-     RELOC_NUMBER (RINDEX_16C_DISP08,		8)
-     RELOC_NUMBER (RINDEX_16C_DISP08_C,		9)
-     RELOC_NUMBER (RINDEX_16C_DISP16,		10)
-     RELOC_NUMBER (RINDEX_16C_DISP16_C,		11)
-     RELOC_NUMBER (RINDEX_16C_DISP24,		12)
-     RELOC_NUMBER (RINDEX_16C_DISP24_C,		13)
-     RELOC_NUMBER (RINDEX_16C_DISP24a,		14)
-     RELOC_NUMBER (RINDEX_16C_DISP24a_C,	15)
-     RELOC_NUMBER (RINDEX_16C_REG04,		16)
-     RELOC_NUMBER (RINDEX_16C_REG04_C,		17)
-     RELOC_NUMBER (RINDEX_16C_REG04a,		18)
-     RELOC_NUMBER (RINDEX_16C_REG04a_C,		19)
-     RELOC_NUMBER (RINDEX_16C_REG14,		20)
-     RELOC_NUMBER (RINDEX_16C_REG14_C,		21)
-     RELOC_NUMBER (RINDEX_16C_REG16,		22)
-     RELOC_NUMBER (RINDEX_16C_REG16_C,		23)
-     RELOC_NUMBER (RINDEX_16C_REG20,		24)
-     RELOC_NUMBER (RINDEX_16C_REG20_C,		25)
-     RELOC_NUMBER (RINDEX_16C_ABS20,		26)
-     RELOC_NUMBER (RINDEX_16C_ABS20_C,		27)
-     RELOC_NUMBER (RINDEX_16C_ABS24,		28)
-     RELOC_NUMBER (RINDEX_16C_ABS24_C,		29)
-     RELOC_NUMBER (RINDEX_16C_IMM04,		30)
-     RELOC_NUMBER (RINDEX_16C_IMM04_C,		31)
-     RELOC_NUMBER (RINDEX_16C_IMM16,		32)
-     RELOC_NUMBER (RINDEX_16C_IMM16_C,		33)
-     RELOC_NUMBER (RINDEX_16C_IMM20,		34)
-     RELOC_NUMBER (RINDEX_16C_IMM20_C,		35)
-     RELOC_NUMBER (RINDEX_16C_IMM24,		36)
-     RELOC_NUMBER (RINDEX_16C_IMM24_C,		37)
-     RELOC_NUMBER (RINDEX_16C_IMM32,		38)
-     RELOC_NUMBER (RINDEX_16C_IMM32_C,		39)
-END_RELOC_NUMBERS (RINDEX_16C_MAX)
-
-/* CR16C Relocation Types ('cr_reloc_type' entry in the reloc_map structure).
-   The relocation constant name is determined as follows :
-
-   R_16C_<format><size>[_C]
-
-   Where :
-
-     <format> is one of the following:
-	NUM  - R_NUMBER mnemonic,
-	DISP - R_16C_DISPL mnemonic,
-	REG  - R_16C_REGREL mnemonic,
-	ABS  - R_16C_ABS mnemonic,
-	IMM  - R_16C_IMMED mnemonic,
-     <size> stands for R_S_16C_<size> 
-     _C means 'code label' and is only added when R_ADDRTYPE subfield 
-     is of type R_CODE_ADDR.  */
-   
-/* The table below shows what the hex digits in the definition of the
-   relocation type constants correspond to.
-   ------------------------------------------------------------------
-	R_SIZESP	R_FORMAT	R_RELTO	      R_ADDRTYPE
-   ------------------------------------------------------------------  */
-/*	R_S_16C_08	R_NUMBER 	R_ABS 	      R_ADDRESS */
-#define R_16C_NUM08	0X0001
-
-/*	R_S_16C_08	R_NUMBER 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_NUM08_C	0X0006
-
-/*	R_S_16C_16	R_NUMBER 	R_ABS 	      R_ADDRESS */
-#define R_16C_NUM16	0X1001
-
-/*	R_S_16C_16	R_NUMBER 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_NUM16_C 	0X1006
-
-/*      R_S_16C_32      R_NUMBER	R_ABS	      R_ADDRESS */
-#define R_16C_NUM32     0X2001
-
-/*      R_S_16C_32      R_NUMBER	R_ABS	      R_CODE_ADDR */
-#define R_16C_NUM32_C   0X2006
-
-/*	R_S_16C_04	R_16C_DISPL 	R_PCREL	      R_ADDRESS */
-#define R_16C_DISP04	0X5411
-
-/*	R_S_16C_04	R_16C_DISPL 	R_PCREL	      R_CODE_ADDR */
-#define R_16C_DISP04_C	0X5416
-
-/*	R_S_16C_08	R_16C_DISPL 	R_PCREL	      R_ADDRESS */
-#define R_16C_DISP08	0X0411
-
-/*	R_S_16C_08	R_16C_DISPL 	R_PCREL	      R_CODE_ADDR */
-#define R_16C_DISP08_C	0X0416
-
-/*	R_S_16C_16	R_16C_DISPL 	R_PCREL	      R_ADDRESS */
-#define R_16C_DISP16	0X1411
-
-/*	R_S_16C_16	R_16C_DISPL 	R_PCREL	      R_CODE_ADDR */
-#define R_16C_DISP16_C	0X1416
-
-/*	R_S_16C_24	R_16C_DISPL 	R_PCREL	      R_ADDRESS */
-#define R_16C_DISP24	0X7411
-
-/*	R_S_16C_24	R_16C_DISPL 	R_PCREL	      R_CODE_ADDR */
-#define R_16C_DISP24_C	0X7416
-
-/*	R_S_16C_24a	R_16C_DISPL 	R_PCREL	      R_ADDRESS */
-#define R_16C_DISP24a	0X6411
-
-/*	R_S_16C_24a	R_16C_DISPL 	R_PCREL	      R_CODE_ADDR */
-#define R_16C_DISP24a_C	0X6416
-
-/*	R_S_16C_04	R_16C_REGREL 	R_ABS 	      R_ADDRESS */
-#define R_16C_REG04	0X5201
-
-/*	R_S_16C_04	R_16C_REGREL 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_REG04_C	0X5206
-
-/*	R_S_16C_04_a	R_16C_REGREL 	R_ABS 	      R_ADDRESS */
-#define R_16C_REG04a	0X4201
-
-/*	R_S_16C_04_a	R_16C_REGREL 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_REG04a_C	0X4206
-
-/*	R_S_16C_14	R_16C_REGREL 	R_ABS 	      R_ADDRESS */
-#define R_16C_REG14	0X3201
-
-/*	R_S_16C_14	R_16C_REGREL 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_REG14_C	0X3206
-
-/*	R_S_16C_16	R_16C_REGREL 	R_ABS 	      R_ADDRESS */
-#define R_16C_REG16	0X1201
-
-/*	R_S_16C_16	R_16C_REGREL 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_REG16_C	0X1206
-
-/*	R_S_16C_20	R_16C_REGREL 	R_ABS 	      R_ADDRESS */
-#define R_16C_REG20	0X8201
-
-/*	R_S_16C_20	R_16C_REGREL 	R_ABS 	      R_CODE_ADDR */
-#define R_16C_REG20_C	0X8206
-
-/*      R_S_16C_20      R_16C_ABS	R_ABS	      R_ADDRESS */
-#define R_16C_ABS20     0X8101
-
-/*      R_S_16C_20      R_16C_ABS	R_ABS	      R_CODE_ADDR */
-#define R_16C_ABS20_C   0X8106
-
-/*      R_S_16C_24      R_16C_ABS	R_ABS	      R_ADDRESS */
-#define R_16C_ABS24     0X7101
-
-/*      R_S_16C_24      R_16C_ABS	R_ABS	      R_CODE_ADDR */
-#define R_16C_ABS24_C   0X7106
-
-/*      R_S_16C_04      R_16C_IMMED	R_ABS	      R_ADDRESS */
-#define R_16C_IMM04     0X5301
-
-/*      R_S_16C_04      R_16C_IMMED	R_ABS	      R_CODE_ADDR */
-#define R_16C_IMM04_C   0X5306
-
-/*      R_S_16C_16      R_16C_IMMED	R_ABS	      R_ADDRESS */
-#define R_16C_IMM16     0X1301
-
-/*      R_S_16C_16      R_16C_IMMED	R_ABS	      R_CODE_ADDR */
-#define R_16C_IMM16_C   0X1306
-
-/*      R_S_16C_20      R_16C_IMMED	R_ABS	      R_ADDRESS */
-#define R_16C_IMM20     0X8301
-
-/*      R_S_16C_20      R_16C_IMMED	R_ABS	      R_CODE_ADDR */
-#define R_16C_IMM20_C   0X8306
-
-/*      R_S_16C_24      R_16C_IMMED	R_ABS	      R_ADDRESS */
-#define R_16C_IMM24     0X7301
-
-/*      R_S_16C_24      R_16C_IMMED	R_ABS	      R_CODE_ADDR */
-#define R_16C_IMM24_C   0X7306
-
-/*      R_S_16C_32      R_16C_IMMED	R_ABS	      R_ADDRESS */
-#define R_16C_IMM32     0X2301
-
-/*      R_S_16C_32      R_16C_IMMED	R_ABS	      R_CODE_ADDR */
-#define R_16C_IMM32_C   0X2306
-
-
-/* Relocation item type.  */
-#define   R_ADDRTYPE	 0x000f
-#define   R_ADDRESS      0x0001    /* Take address of symbol.  */
-#define   R_CODE_ADDR    0x0006    /* Take address of symbol divided by 2.  */
-
-/* Relocation action.  */
-#define   R_RELTO        0x00f0
-#define   R_ABS          0x0000    /* Keep symbol's address as such.  */
-#define   R_PCREL        0x0010    /* Subtract the pc address of hole.  */
-
-/* Relocation item data format.  */
-#define   R_FORMAT       0x0f00
-#define   R_NUMBER       0x0000    /* Retain as two's complement value.  */
-#define   R_16C_DISPL    0x0400    /* CR16C displacement type.  */
-#define   R_16C_ABS      0x0100    /* CR16C absolute type.  */
-#define   R_16C_REGREL   0x0200    /* CR16C register-relative type.  */
-#define   R_16C_IMMED    0x0300    /* CR16C immediate type.  */
-
-/* Relocation item size. */
-#define   R_SIZESP       0xf000
-#define   R_S_16C_04     0x5000
-#define   R_S_16C_04_a   0x4000
-#define   R_S_16C_08	 0x0000
-#define   R_S_16C_14     0x3000
-#define   R_S_16C_16	 0x1000
-#define   R_S_16C_20     0x8000
-#define   R_S_16C_24_a   0x6000
-#define   R_S_16C_24	 0x7000
-#define   R_S_16C_32     0x2000
-
-
-/* Processor specific section indices.  These sections do not actually
-   exist.  Symbols with a st_shndx field corresponding to one of these
-   values have a special meaning.  */
-
-/* Far common symbol.  */
-#define SHN_CR16C_FCOMMON	SHN_LORESERVE
-#define SHN_CR16C_NCOMMON	(SHN_LORESERVE + 1)
-
-typedef struct reloc_map
-{
-  unsigned short            cr_reloc_type;  /* CR relocation type.  */
-  bfd_reloc_code_real_type  bfd_reloc_enum; /* BFD relocation enum.  */
-} RELOC_MAP;
-
-#endif /* _ELF_CR16C_H */
diff --git a/ld/ChangeLog b/ld/ChangeLog
index ad52197..ea26203 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,15 @@
 2019-11-07  Alan Modra  <amodra@gmail.com>
 
+	* emulparams/elf32cr16c.sh: Delete.
+	* scripttempl/elf32cr16c.sc: Delete.
+	* Makefile.am,
+	* configure.tgt: Remove cr16c support.
+	* NEWS: Mention removal of cr16c.
+	* Makefile.in,
+	* po/BLD-POTFILES.in: Regenerate.
+
+2019-11-07  Alan Modra  <amodra@gmail.com>
+
 	* configure.tgt: Order targets by cpu.
 
 2019-11-07  Alan Modra  <amodra@gmail.com>
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 2790838..ddc7a78 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -238,7 +238,6 @@ ALL_EMULATION_SOURCES = \
 	eelf32bfin.c \
 	eelf32bfinfd.c \
 	eelf32cr16.c \
-	eelf32cr16c.c \
 	eelf32crx.c \
 	eelf32epiphany.c \
 	eelf32epiphany_4x4.c \
@@ -729,7 +728,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32bfin.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32bfinfd.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16.Pc@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16c.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32crx.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32epiphany.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32epiphany_4x4.Pc@am__quote@
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 395bef1..fdf0612 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -728,7 +728,6 @@ ALL_EMULATION_SOURCES = \
 	eelf32bfin.c \
 	eelf32bfinfd.c \
 	eelf32cr16.c \
-	eelf32cr16c.c \
 	eelf32crx.c \
 	eelf32epiphany.c \
 	eelf32epiphany_4x4.c \
@@ -1296,7 +1295,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32btsmipn32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32btsmipn32_fbsd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16c.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32crx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ebmip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ebmipvxworks.Po@am__quote@
@@ -2336,7 +2334,6 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32bfin.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32bfinfd.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16.Pc@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32cr16c.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32crx.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32epiphany.Pc@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32epiphany_4x4.Pc@am__quote@
diff --git a/ld/NEWS b/ld/NEWS
index 8d3e9ad..bc21c39 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+* cr16c support removed.
+
 Changes in 2.33:
 
 * Add command-line option --no-print-map-discarded.
diff --git a/ld/configure.tgt b/ld/configure.tgt
index aaeda30..c0c8a69 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -224,8 +224,6 @@ bpf-*-*)		targ_emul=elf64bpf
 			;;
 cr16-*-elf*)		targ_emul=elf32cr16
 			;;
-cr16c-*-elf*)		targ_emul=elf32cr16c
-			;;
 cris-*-*aout*)		targ_emul=crisaout
 			targ_extra_emuls="criself crislinux"
 			targ_extra_libpath=$targ_extra_emuls
diff --git a/ld/emulparams/elf32cr16c.sh b/ld/emulparams/elf32cr16c.sh
deleted file mode 100644
index 986d84d..0000000
--- a/ld/emulparams/elf32cr16c.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-SCRIPT_NAME=elf32cr16c
-TEMPLATE_NAME=elf
-OUTPUT_FORMAT="elf32-cr16c"
-ARCH=cr16c
-ENTRY=_start
diff --git a/ld/po/BLD-POTFILES.in b/ld/po/BLD-POTFILES.in
index e590622..846f2ab 100644
--- a/ld/po/BLD-POTFILES.in
+++ b/ld/po/BLD-POTFILES.in
@@ -97,7 +97,6 @@ eelf32btsmip_fbsd.c
 eelf32btsmipn32.c
 eelf32btsmipn32_fbsd.c
 eelf32cr16.c
-eelf32cr16c.c
 eelf32crx.c
 eelf32ebmip.c
 eelf32ebmipvxworks.c
diff --git a/ld/scripttempl/elf32cr16c.sc b/ld/scripttempl/elf32cr16c.sc
deleted file mode 100644
index 5c120cf..0000000
--- a/ld/scripttempl/elf32cr16c.sc
+++ /dev/null
@@ -1,66 +0,0 @@
-# Linker Script for National Semiconductor's CR16C-ELF32.
-#
-# Copyright (C) 2014-2019 Free Software Foundation, Inc.
-#
-# Copying and distribution of this file, with or without modification,
-# are permitted in any medium without royalty provided the copyright
-# notice and this notice are preserved.
-
-# Using an empty script for ld -r is better than mashing together
-# sections.  This hack likely leaves ld -Ur broken.
-test -n "${RELOCATING}" || exit 0
-
-test -z "$ENTRY" && ENTRY=_start
-cat <<EOF
-
-/* Example Linker Script for linking NS CR16C or CR16CPlus
-   elf32 files, which were compiled with either the near data
-   model or the default data model.
-
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
-
-   Copying and distribution of this script, with or without modification,
-   are permitted in any medium without royalty provided the copyright
-   notice and this notice are preserved.  */
-
-EOF
-test -n "${RELOCATING}" && cat <<EOF
-ENTRY(${ENTRY})
-
-MEMORY
-{
-  near_rom  : ORIGIN = 0x4,     LENGTH = 512K - 4
-  near_ram  : ORIGIN = 512K,    LENGTH = 512K - 64K
-  rom	    : ORIGIN = 1M,      LENGTH = 3M
-  ram	    : ORIGIN = 4M,      LENGTH = 10M
-}
-
-EOF
-
-cat <<EOF
-SECTIONS
-{
-/* The heap is located in near memory, to suit both the near and
-   default data models.  The heap and stack are aligned to the bus
-   width, as a speed optimization for accessing  data located
-   there. The alignment to 4 bytes is compatible for both the CR16C
-   bus width (2 bytes) and CR16CPlus bus width (4 bytes).  */
-
-  .text            : { __TEXT_START = .;   *(.text)                                        __TEXT_END = .; }${RELOCATING+ > rom}
-  .rdata           : { __RDATA_START = .;  *(.rdata_4) *(.rdata_2) *(.rdata_1)             __RDATA_END = .; }${RELOCATING+ > near_rom}
-  .ctor ALIGN(4)   : { __CTOR_LIST = .;    *(.ctors)                                       __CTOR_END = .; }${RELOCATING+ > near_rom}
-  .dtor ALIGN(4)   : { __DTOR_LIST = .;    *(.dtors)                                       __DTOR_END = .; }${RELOCATING+ > near_rom}
-  .data            : { __DATA_START = .;   *(.data_4) *(.data_2) *(.data_1) *(.data)       __DATA_END = .; }${RELOCATING+ > ram AT > rom}
-  .bss (NOLOAD)    : { __BSS_START = .;    *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) __BSS_END = .; }${RELOCATING+ > ram}
-  .nrdata          : { __NRDATA_START = .; *(.nrdat_4) *(.nrdat_2) *(.nrdat_1)             __NRDATA_END =  .; }${RELOCATING+ > near_rom}
-  .ndata           : { __NDATA_START = .;  *(.ndata_4) *(.ndata_2) *(.ndata_1)             __NDATA_END = .; }${RELOCATING+ > near_ram AT > rom}
-  .nbss (NOLOAD)   : { __NBSS_START = .;   *(.nbss_4) *(.nbss_2) *(.nbss_1) *(.ncommon)    __NBSS_END = .; }${RELOCATING+ > near_ram}
-  .heap (NOLOAD)   : { . = ALIGN(4); __HEAP_START = .; . += 0x2000;                        __HEAP_MAX = .; }${RELOCATING+ > near_ram}
-  .stack (NOLOAD)  : { . = ALIGN(4); . += 0x6000; __STACK_START = .; }${RELOCATING+ > ram}
-  .istack (NOLOAD) : { . = ALIGN(2); . += 0x100; __ISTACK_START = .; }${RELOCATING+ > ram}
-}
-
-${RELOCATING+__DATA_IMAGE_START = LOADADDR(.data);}
-${RELOCATING+__NDATA_IMAGE_START = LOADADDR(.ndata);}
-
-EOF


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]