gdb: Switch "info types" over to use the gdb::options framework
[deliverable/binutils-gdb.git] / bfd / elf32-d30v.c
index 5a6eafa6d3a6ec9b46e3bb824d601b699000831a..975dbc481d785f7c195c9de8085ee6a378c199b1 100644 (file)
@@ -1,13 +1,12 @@
 /* D30V-specific support for 32-bit ELF
 /* D30V-specific support for 32-bit ELF
-   Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1997-2019 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.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
    Contributed by Martin Hunt (hunt@cygnus.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,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -20,8 +19,8 @@
    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 "bfd.h"
 #include "sysdep.h"
 #include "sysdep.h"
+#include "bfd.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "elf/d30v.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "elf/d30v.h"
@@ -57,7 +56,7 @@ bfd_elf_d30v_reloc (bfd *abfd,
     }
 
   r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
     }
 
   r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
-                             input_section, output_bfd, error_message);
+                            input_section, output_bfd, error_message);
   if (r != bfd_reloc_continue)
     return r;
 
   if (r != bfd_reloc_continue)
     return r;
 
@@ -124,7 +123,7 @@ bfd_elf_d30v_reloc (bfd *abfd,
     }
 
   in1 |= (relocation >> 26) & 0x3F;            /* Top 6 bits.  */
     }
 
   in1 |= (relocation >> 26) & 0x3F;            /* Top 6 bits.  */
-  in2 |= ((relocation & 0x03FC0000) << 2);     /* Next 8 bits.  */
+  in2 |= ((relocation & 0x03FC0000) << 2);     /* Next 8 bits.  */
   in2 |= relocation & 0x0003FFFF;              /* Bottom 18 bits.  */
 
   /* Change a PC-relative instruction to its
   in2 |= relocation & 0x0003FFFF;              /* Bottom 18 bits.  */
 
   /* Change a PC-relative instruction to its
@@ -165,7 +164,7 @@ bfd_elf_d30v_reloc_21 (bfd *abfd,
     }
 
   r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
     }
 
   r = bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
-                             input_section, output_bfd, error_message);
+                            input_section, output_bfd, error_message);
   if (r != bfd_reloc_continue)
     return r;
 
   if (r != bfd_reloc_continue)
     return r;
 
@@ -255,11 +254,11 @@ static reloc_howto_type elf_d30v_howto_table[] =
   /* This reloc does nothing.  */
   HOWTO (R_D30V_NONE,          /* Type.  */
         0,                     /* Rightshift.  */
   /* This reloc does nothing.  */
   HOWTO (R_D30V_NONE,          /* Type.  */
         0,                     /* Rightshift.  */
-        2,                     /* Size (0 = byte, 1 = short, 2 = long).  */
-        32,                    /* Bitsize.  */
+        3,                     /* Size (0 = byte, 1 = short, 2 = long).  */
+        0,                     /* Bitsize.  */
         FALSE,                 /* PC_relative.  */
         0,                     /* Bitpos.  */
         FALSE,                 /* PC_relative.  */
         0,                     /* Bitpos.  */
-        complain_overflow_bitfield, /* Complain_on_overflow.  */
+        complain_overflow_dont, /* Complain_on_overflow.  */
         bfd_elf_generic_reloc, /* Special_function.  */
         "R_D30V_NONE",         /* Name.  */
         FALSE,                 /* Partial_inplace.  */
         bfd_elf_generic_reloc, /* Special_function.  */
         "R_D30V_NONE",         /* Name.  */
         FALSE,                 /* Partial_inplace.  */
@@ -509,30 +508,46 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
 
 /* Set the howto pointer for an D30V ELF reloc (type REL).  */
 
 
 /* Set the howto pointer for an D30V ELF reloc (type REL).  */
 
-static void
-d30v_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
+static bfd_boolean
+d30v_info_to_howto_rel (bfd *abfd,
                        arelent *cache_ptr,
                        Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
                        arelent *cache_ptr,
                        Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  BFD_ASSERT (r_type < (unsigned int) R_D30V_max);
+  if (r_type >= (unsigned int) R_D30V_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_d30v_howto_table[r_type];
   cache_ptr->howto = &elf_d30v_howto_table[r_type];
+  return TRUE;
 }
 
 /* Set the howto pointer for an D30V ELF reloc (type RELA).  */
 
 }
 
 /* Set the howto pointer for an D30V ELF reloc (type RELA).  */
 
-static void
-d30v_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
+static bfd_boolean
+d30v_info_to_howto_rela (bfd *abfd,
                         arelent *cache_ptr,
                         Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
                         arelent *cache_ptr,
                         Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  BFD_ASSERT (r_type < (unsigned int) R_D30V_max);
+  if (r_type >= (unsigned int) R_D30V_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_d30v_howto_table[r_type];
   cache_ptr->howto = &elf_d30v_howto_table[r_type];
+  return TRUE;
 }
 
 #define ELF_ARCH               bfd_arch_d30v
 }
 
 #define ELF_ARCH               bfd_arch_d30v
@@ -540,7 +555,7 @@ d30v_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
 #define ELF_MACHINE_ALT1       EM_CYGNUS_D30V
 #define ELF_MAXPAGESIZE                0x1000
 
 #define ELF_MACHINE_ALT1       EM_CYGNUS_D30V
 #define ELF_MAXPAGESIZE                0x1000
 
-#define TARGET_BIG_SYM          bfd_elf32_d30v_vec
+#define TARGET_BIG_SYM         d30v_elf32_vec
 #define TARGET_BIG_NAME                "elf32-d30v"
 
 #define elf_info_to_howto      d30v_info_to_howto_rela
 #define TARGET_BIG_NAME                "elf32-d30v"
 
 #define elf_info_to_howto      d30v_info_to_howto_rela
This page took 0.025162 seconds and 4 git commands to generate.