From 2b87c5c4ec4a7d6285c0991c202aae3cf8401d99 Mon Sep 17 00:00:00 2001
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Date: Tue, 14 Feb 2012 01:00:22 +0100
Subject: [PATCH] Fix relaxation of assembler resolved references

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Signed-off-by: Nagaraju Mekala <nagaraju.mekala@xilinx.com>

---
 bfd/elf32-microblaze.c     | 38 ++++++++++++++++++++++++++++++++++++++
 gas/config/tc-microblaze.c |  1 +
 2 files changed, 39 insertions(+)

diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c
index e3c8027..359484d 100644
--- a/bfd/elf32-microblaze.c
+++ b/bfd/elf32-microblaze.c
@@ -1973,6 +1973,44 @@ microblaze_elf_relax_section (bfd *abfd,
 	  irelscanend = irelocs + o->reloc_count;
 	  for (irelscan = irelocs; irelscan < irelscanend; irelscan++)
 	    {
+              if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_NONE)
+                {
+                  unsigned int val;
+
+                  isym = isymbuf + ELF32_R_SYM (irelscan->r_info);
+
+                  /* This was a PC-relative instruction that was completely resolved.  */
+                  if (ocontents == NULL)
+                    {
+                      if (elf_section_data (o)->this_hdr.contents != NULL)
+                          ocontents = elf_section_data (o)->this_hdr.contents;
+                      else
+                        {
+                          /* We always cache the section contents.
+                             Perhaps, if info->keep_memory is FALSE, we
+                             should free them, if we are permitted to.  */
+
+                          if (o->rawsize == 0)
+                              o->rawsize = o->size;
+                          ocontents = (bfd_byte *) bfd_malloc (o->rawsize);
+                          if (ocontents == NULL)
+                              goto error_return;
+                          if (!bfd_get_section_contents (abfd, o, ocontents,
+                                                         (file_ptr) 0,
+                                                         o->rawsize))
+                              goto error_return;
+                          elf_section_data (o)->this_hdr.contents = ocontents;
+                        }
+                    }
+                 irelscan->r_addend -= calc_fixup (irelscan->r_addend
+                                                    + isym->st_value, sec);
+                  val = bfd_get_32 (abfd, ocontents + irelscan->r_offset);
+                  microblaze_bfd_write_imm_value_32 (abfd, ocontents + irelscan->r_offset,
+                                                     irelscan->r_addend);
+              }
+              if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_64_NONE) {
+                  fprintf(stderr, "Unhandled NONE 64\n");
+              }
 	      if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32)
 		{
 		  isym = isymbuf + ELF32_R_SYM (irelscan->r_info);
diff --git a/gas/config/tc-microblaze.c b/gas/config/tc-microblaze.c
index c92e9ce..3e72840 100644
--- a/gas/config/tc-microblaze.c
+++ b/gas/config/tc-microblaze.c
@@ -2205,6 +2205,7 @@ md_apply_fix (fixS *   fixP,
       else
 	fixP->fx_r_type = BFD_RELOC_NONE;
       fixP->fx_addsy = section_symbol (absolute_section);
+      fixP->fx_done = 0;
     }
   return;
 }
