Fix thinko in recent update to bfd_section_from_shdr.
[deliverable/binutils-gdb.git] / bfd / coff-z8k.c
index fb07db3a6e5a9d78d11b00feef09449828dd0a47..5fe054cec99fe2aec68b26a7f8865eac080ff35e 100644 (file)
@@ -1,6 +1,5 @@
 /* BFD back-end for Zilog Z800n COFF binaries.
 /* BFD back-end for Zilog Z800n COFF binaries.
-   Copyright 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
-   2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1992-2020 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Written by Steve Chamberlain, <sac@cygnus.com>.
 
    Contributed by Cygnus Support.
    Written by Steve Chamberlain, <sac@cygnus.com>.
 
@@ -8,7 +7,7 @@
 
    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 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,
@@ -18,7 +17,8 @@
 
    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 "sysdep.h"
 #include "bfd.h"
@@ -85,7 +85,7 @@ rtype2howto (arelent *internal, struct internal_reloc *dst)
   switch (dst->r_type)
     {
     default:
   switch (dst->r_type)
     {
     default:
-      abort ();
+      internal->howto = NULL;
       break;
     case R_IMM8:
       internal->howto = &r_imm8;
       break;
     case R_IMM8:
       internal->howto = &r_imm8;
@@ -118,18 +118,18 @@ rtype2howto (arelent *internal, struct internal_reloc *dst)
 
 static reloc_howto_type *
 coff_z8k_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 static reloc_howto_type *
 coff_z8k_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-                            bfd_reloc_code_real_type code)
+                           bfd_reloc_code_real_type code)
 {
   switch (code)
     {
 {
   switch (code)
     {
-    case BFD_RELOC_8:          return & r_imm8;
-    case BFD_RELOC_16:         return & r_da;
-    case BFD_RELOC_32:         return & r_imm32;
-    case BFD_RELOC_8_PCREL:     return & r_jr;
-    case BFD_RELOC_16_PCREL:    return & r_rel16;
-    case BFD_RELOC_Z8K_DISP7:   return & r_disp7;
-    case BFD_RELOC_Z8K_CALLR:   return & r_callr;
-    case BFD_RELOC_Z8K_IMM4L:   return & r_imm4l;
+    case BFD_RELOC_8:          return & r_imm8;
+    case BFD_RELOC_16:         return & r_da;
+    case BFD_RELOC_32:         return & r_imm32;
+    case BFD_RELOC_8_PCREL:    return & r_jr;
+    case BFD_RELOC_16_PCREL:   return & r_rel16;
+    case BFD_RELOC_Z8K_DISP7:  return & r_disp7;
+    case BFD_RELOC_Z8K_CALLR:  return & r_callr;
+    case BFD_RELOC_Z8K_IMM4L:  return & r_imm4l;
     default:                   BFD_FAIL ();
       return 0;
     }
     default:                   BFD_FAIL ();
       return 0;
     }
@@ -169,10 +169,10 @@ coff_z8k_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 static void
 reloc_processing (arelent *relent,
 
 static void
 reloc_processing (arelent *relent,
-                  struct internal_reloc *reloc,
-                  asymbol **symbols,
-                  bfd *abfd,
-                  asection *section)
+                 struct internal_reloc *reloc,
+                 asymbol **symbols,
+                 bfd *abfd,
+                 asection *section)
 {
   relent->address = reloc->r_vaddr;
   rtype2howto (relent, reloc);
 {
   relent->address = reloc->r_vaddr;
   rtype2howto (relent, reloc);
@@ -188,12 +188,12 @@ reloc_processing (arelent *relent,
 
 static void
 extra_case (bfd *in_abfd,
 
 static void
 extra_case (bfd *in_abfd,
-            struct bfd_link_info *link_info,
-            struct bfd_link_order *link_order,
-            arelent *reloc,
-            bfd_byte *data,
-            unsigned int *src_ptr,
-            unsigned int *dst_ptr)
+           struct bfd_link_info *link_info,
+           struct bfd_link_order *link_order,
+           arelent *reloc,
+           bfd_byte *data,
+           unsigned int *src_ptr,
+           unsigned int *dst_ptr)
 {
   asection * input_section = link_order->u.indirect.section;
 
 {
   asection * input_section = link_order->u.indirect.section;
 
@@ -258,20 +258,17 @@ extra_case (bfd *in_abfd,
                       + input_section->output_offset
                       + input_section->output_section->vma);
        int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
                       + input_section->output_offset
                       + input_section->output_section->vma);
        int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
-                                     word and the pc's been incremented.  */
+                                    word and the pc's been incremented.  */
 
        if (gap & 1)
          abort ();
        gap /= 2;
 
        if (gap & 1)
          abort ();
        gap /= 2;
-       if (gap > 128 || gap < -128)
-         {
-           if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, NULL,
-                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
-                   reloc->howto->name, reloc->addend, input_section->owner,
-                   input_section, reloc->address)))
-             abort ();
-         }
+       if (gap > 127 || gap < -128)
+         (*link_info->callbacks->reloc_overflow)
+           (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+            reloc->howto->name, reloc->addend, input_section->owner,
+            input_section, reloc->address);
+
        bfd_put_8 (in_abfd, gap, data + *dst_ptr);
        (*dst_ptr)++;
        (*src_ptr)++;
        bfd_put_8 (in_abfd, gap, data + *dst_ptr);
        (*dst_ptr)++;
        (*src_ptr)++;
@@ -286,24 +283,21 @@ extra_case (bfd *in_abfd,
                       + input_section->output_offset
                       + input_section->output_section->vma);
        int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
                       + input_section->output_offset
                       + input_section->output_section->vma);
        int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
-                                     word and the pc's been incremented.  */
+                                    word and the pc's been incremented.  */
 
        if (gap & 1)
          abort ();
        gap /= 2;
 
        if (gap > 0 || gap < -127)
 
        if (gap & 1)
          abort ();
        gap /= 2;
 
        if (gap > 0 || gap < -127)
-         {
-           if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, NULL,
-                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
-                   reloc->howto->name, reloc->addend, input_section->owner,
-                   input_section, reloc->address)))
-             abort ();
-         }
+         (*link_info->callbacks->reloc_overflow)
+           (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+            reloc->howto->name, reloc->addend, input_section->owner,
+            input_section, reloc->address);
+
        bfd_put_8 (in_abfd,
        bfd_put_8 (in_abfd,
-                   (bfd_get_8 ( in_abfd, data + *dst_ptr) & 0x80) + (-gap & 0x7f),
-                   data + *dst_ptr);
+                  (bfd_get_8 ( in_abfd, data + *dst_ptr) & 0x80) + (-gap & 0x7f),
+                  data + *dst_ptr);
        (*dst_ptr)++;
        (*src_ptr)++;
        break;
        (*dst_ptr)++;
        (*src_ptr)++;
        break;
@@ -321,18 +315,15 @@ extra_case (bfd *in_abfd,
        if (gap & 1)
          abort ();
        if (gap > 4096 || gap < -4095)
        if (gap & 1)
          abort ();
        if (gap > 4096 || gap < -4095)
-         {
-           if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, NULL,
-                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
-                   reloc->howto->name, reloc->addend, input_section->owner,
-                   input_section, reloc->address)))
-             abort ();
-         }
+         (*link_info->callbacks->reloc_overflow)
+           (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+            reloc->howto->name, reloc->addend, input_section->owner,
+            input_section, reloc->address);
+
        gap /= 2;
        bfd_put_16 (in_abfd,
        gap /= 2;
        bfd_put_16 (in_abfd,
-                    (bfd_get_16 ( in_abfd, data + *dst_ptr) & 0xf000) | (-gap & 0x0fff),
-                    data + *dst_ptr);
+                   (bfd_get_16 ( in_abfd, data + *dst_ptr) & 0xf000) | (-gap & 0x0fff),
+                   data + *dst_ptr);
        (*dst_ptr) += 2;
        (*src_ptr) += 2;
        break;
        (*dst_ptr) += 2;
        (*src_ptr) += 2;
        break;
@@ -348,14 +339,11 @@ extra_case (bfd *in_abfd,
        int gap = dst - dot - 2;
 
        if (gap > 32767 || gap < -32768)
        int gap = dst - dot - 2;
 
        if (gap > 32767 || gap < -32768)
-         {
-           if (! ((*link_info->callbacks->reloc_overflow)
-                  (link_info, NULL,
-                   bfd_asymbol_name (*reloc->sym_ptr_ptr),
-                   reloc->howto->name, reloc->addend, input_section->owner,
-                   input_section, reloc->address)))
-             abort ();
-         }
+         (*link_info->callbacks->reloc_overflow)
+           (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+            reloc->howto->name, reloc->addend, input_section->owner,
+            input_section, reloc->address);
+
        bfd_put_16 (in_abfd, (bfd_vma) gap, data + *dst_ptr);
        (*dst_ptr) += 2;
        (*src_ptr) += 2;
        bfd_put_16 (in_abfd, (bfd_vma) gap, data + *dst_ptr);
        (*dst_ptr) += 2;
        (*src_ptr) += 2;
@@ -371,6 +359,10 @@ extra_case (bfd *in_abfd,
 #define coff_bfd_reloc_type_lookup  coff_z8k_reloc_type_lookup
 #define coff_bfd_reloc_name_lookup coff_z8k_reloc_name_lookup
 
 #define coff_bfd_reloc_type_lookup  coff_z8k_reloc_type_lookup
 #define coff_bfd_reloc_name_lookup coff_z8k_reloc_name_lookup
 
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata     NULL
+#endif
+
 #include "coffcode.h"
 
 #undef  coff_bfd_get_relocated_section_contents
 #include "coffcode.h"
 
 #undef  coff_bfd_get_relocated_section_contents
@@ -380,4 +372,4 @@ extra_case (bfd *in_abfd,
 #undef  coff_bfd_relax_section
 #define coff_bfd_relax_section bfd_coff_reloc16_relax_section
 
 #undef  coff_bfd_relax_section
 #define coff_bfd_relax_section bfd_coff_reloc16_relax_section
 
-CREATE_BIG_COFF_TARGET_VEC (z8kcoff_vec, "coff-z8k", 0, 0, '_', NULL, COFF_SWAP_TABLE)
+CREATE_BIG_COFF_TARGET_VEC (z8k_coff_vec, "coff-z8k", 0, 0, '_', NULL, COFF_SWAP_TABLE)
This page took 0.028641 seconds and 4 git commands to generate.