  ENUMDOC
    This is a 64 bit reloc that stores the 32 bit pc relative
 diff --git a/binutils/readelf.c b/binutils/readelf.c
-index 19b46c9..81a027c 100644
+index af6463e..343eb61 100644
 --- a/binutils/readelf.c
 +++ b/binutils/readelf.c
-@@ -10547,6 +10547,10 @@ is_none_reloc (unsigned int reloc_type)
-       return reloc_type == 0;
-     case EM_AARCH64:
-       return reloc_type == 0 || reloc_type == 256;
+@@ -10821,6 +10821,10 @@ is_none_reloc (unsigned int reloc_type)
+ 	      || reloc_type == 19  /* R_XTENSA_DIFF32.  */);
+     case EM_METAG:
+       return reloc_type == 3; /* R_METAG_NONE.  */
 +    case EM_MICROBLAZE:
 +      return reloc_type == 30 /* R_MICROBLAZE_32_NONE.  */
-+             || reloc_type == 0 /* R_MICROBLAZE_NONE.  */
-+             || reloc_type == 9; /* R_MICROBLAZE_64_NONE.  */
-     case EM_XTENSA_OLD:
-     case EM_XTENSA:
-       return (reloc_type == 0      /* R_XTENSA_NONE.  */
++              || reloc_type == 0 /* R_MICROBLAZE_NONE.  */
++              || reloc_type == 9; /* R_MICROBLAZE_64_NONE.  */
+     }
+   return FALSE;
+ }
 diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
-index 7dd5895..884819f 100644
+index 12ad616..46d61db 100644
 --- a/gas/config/tc-microblaze.c
 +++ b/gas/config/tc-microblaze.c
-@@ -2166,6 +2166,8 @@ md_apply_fix (fixS *   fixP,
+@@ -2167,6 +2167,8 @@ md_apply_fix (fixS *   fixP,
  	 moves code around due to relaxing.  */
        if (fixP->fx_r_type == BFD_RELOC_64_PCREL)
  	fixP->fx_r_type = BFD_RELOC_MICROBLAZE_64_NONE;

+                /* Validate the in-band val.  */
+                val = bfd_get_32 (abfd, contents + irel->r_offset);
+                if (val != irel->r_addend && ELF32_R_TYPE (irel->r_info) == R_MICROBLAZE_32_NONE) {
+                    fprintf(stderr, "%d: CORRUPT relax reloc %x %lx\n", __LINE__, val, irel->r_addend);
+                }
 	        irel->r_addend -= (efix - sfix);
 	        /* Should use HOWTO.  */
 	        microblaze_bfd_write_imm_value_32 (abfd, contents + irel->r_offset,
@@ -1906,12 +1931,16 @@ microblaze_elf_relax_section (bfd *abfd,
           irelscanend = irelocs + o->reloc_count;
           for (irelscan = irelocs; irelscan < irelscanend; irelscan++)
             {

   "BFD_RELOC_MICROBLAZE_64_GOTPC",
   "BFD_RELOC_MICROBLAZE_64_GOT",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index 7f46c58..5bcd52d 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -6396,6 +6396,12 @@ ENUMDOC
   This is a 32 bit reloc for the microblaze to handle
   expressions of the form "Symbol Op Symbol"
 ENUM
