Add Visium support to binutils
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 6 Dec 2014 15:39:24 +0000 (16:39 +0100)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 6 Dec 2014 15:39:24 +0000 (16:39 +0100)
binutils/
* readelf.c: Include elf/visium.h.
(guess_is_rela): Deal with EM_VISIUM.
(dump_relocations): Likewise.
(get_machine_name): Likewise.
(get_machine_flags): Likewise.
(get_osabi_name): Likewise.
(is_32bit_abs_reloc): Likewise.
(is_32bit_pcrel_reloc): Likewise.
(is_16bit_abs_reloc): Likewise.
binutils/testsuite:
* binutils-all/objcopy.exp: Skip strip-10 for Visium.

binutils/ChangeLog
binutils/readelf.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/objcopy.exp

index 4e79a75905fbdb4d5fe1bfed44140a129cfff607..5f85e485838e102a0e9e59d9b03b44dd3864454a 100644 (file)
@@ -1,3 +1,15 @@
+2014-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * readelf.c: Include elf/visium.h.
+       (guess_is_rela): Deal with EM_VISIUM.
+       (dump_relocations): Likewise.
+       (get_machine_name): Likewise.
+       (get_machine_flags): Likewise.
+       (get_osabi_name): Likewise.
+       (is_32bit_abs_reloc): Likewise.
+       (is_32bit_pcrel_reloc): Likewise.
+       (is_16bit_abs_reloc): Likewise.
+
 2014-12-05  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * readelf.c (decode_AVR_machine_flags): New function.
index 4e8b9abbfbd508b510e52537e22924f40e4f98c2..926787c84d2584b4e166b090344b16a613d39ba5 100644 (file)
 #include "elf/tilepro.h"
 #include "elf/v850.h"
 #include "elf/vax.h"
+#include "elf/visium.h"
 #include "elf/x86-64.h"
 #include "elf/xc16x.h"
 #include "elf/xgate.h"
@@ -754,6 +755,7 @@ guess_is_rela (unsigned int e_machine)
     case EM_V850:
     case EM_CYGNUS_V850:
     case EM_VAX:
+    case EM_VISIUM:
     case EM_X86_64:
     case EM_L1OM:
     case EM_K1OM:
@@ -1344,6 +1346,10 @@ dump_relocations (FILE * file,
          rtype = elf_vax_reloc_type (type);
          break;
 
+       case EM_VISIUM:
+         rtype = elf_visium_reloc_type (type);
+         break;
+
        case EM_ADAPTEVA_EPIPHANY:
          rtype = elf_epiphany_reloc_type (type);
          break;
@@ -2123,6 +2129,7 @@ get_machine_name (unsigned e_machine)
     case EM_SVX:               return "Silicon Graphics SVx";
     case EM_ST19:              return "STMicroelectronics ST19 8-bit microcontroller";
     case EM_VAX:               return "Digital VAX";
+    case EM_VISIUM:            return "CDS VISIUMcore processor";
     case EM_AVR_OLD:
     case EM_AVR:               return "Atmel AVR 8-bit microcontroller";
     case EM_CRIS:              return "Axis Communications 32-bit embedded processor";
@@ -3214,6 +3221,15 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
            strcat (buf, ", G-Float");
          break;
 
+        case EM_VISIUM:
+         if (e_flags & EF_VISIUM_ARCH_MCM)
+           strcat (buf, ", mcm");
+         else if (e_flags & EF_VISIUM_ARCH_MCM24)
+           strcat (buf, ", mcm24");
+         if (e_flags & EF_VISIUM_ARCH_GR6)
+           strcat (buf, ", gr6");
+         break;
+
        case EM_RL78:
          if (e_flags & E_FLAG_RL78_G10)
            strcat (buf, ", G10");
@@ -3310,6 +3326,7 @@ get_osabi_name (unsigned int osabi)
 
          case EM_MSP430:
          case EM_MSP430_OLD:
+         case EM_VISIUM:
            switch (osabi)
              {
              case ELFOSABI_STANDALONE: return _("Standalone App");
@@ -11063,6 +11080,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
       return reloc_type == 0x33; /* R_V810_WORD.  */
     case EM_VAX:
       return reloc_type == 1; /* R_VAX_32.  */
+    case EM_VISIUM:
+      return reloc_type == 3;  /* R_VISIUM_32. */
     case EM_X86_64:
     case EM_L1OM:
     case EM_K1OM:
@@ -11137,6 +11156,8 @@ is_32bit_pcrel_reloc (unsigned int reloc_type)
       return reloc_type == 6; /* R_TILEGX_32_PCREL.  */
     case EM_TILEPRO:
       return reloc_type == 4; /* R_TILEPRO_32_PCREL.  */
+    case EM_VISIUM:
+      return reloc_type == 6;  /* R_VISIUM_32_PCREL */
     case EM_X86_64:
     case EM_L1OM:
     case EM_K1OM:
@@ -11294,6 +11315,8 @@ is_16bit_abs_reloc (unsigned int reloc_type)
     case EM_CYGNUS_MN10300:
     case EM_MN10300:
       return reloc_type == 2; /* R_MN10300_16.  */
+    case EM_VISIUM:
+      return reloc_type == 2; /* R_VISIUM_16. */
     case EM_XGATE:
       return reloc_type == 3; /* R_XGATE_16.  */
     default:
index 2a4185e1c68c8740ee9e860b1230a089f8f44945..8576710d799311a303679b9e74c3281b3e59fca3 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * binutils-all/objcopy.exp: Skip strip-10 for Visium.
+
 2014-09-12  Andrew Bennett  <andrew.bennett@imgtec.com>
 
        * binutils-all/objcopy.exp: Add mips*-img-elf* target triple.
index 49d466d7ffecef8fd93436dc7abfe2ebe2491401..c83825a3d104134260687c6c59e91ef5b66589c1 100644 (file)
@@ -956,6 +956,7 @@ if [is_elf_format] {
     # Non-EABI ARM targets will set OSABI to ARM
     if { ![istarget "*-*-hpux*"]
         && ![istarget "msp*-*-*"]
+        && ![istarget "visium-*-*"]
          && !([istarget "arm*-*-*"] && ![istarget "arm-*-*eabi*"])} {
        run_dump_test "strip-10"
     }