* config/tc-sparc.c (tc_gen_reloc): Turn aligned relocs into
authorEric Botcazou <ebotcazou@libertysurf.fr>
Mon, 27 Nov 2006 11:25:27 +0000 (11:25 +0000)
committerEric Botcazou <ebotcazou@libertysurf.fr>
Mon, 27 Nov 2006 11:25:27 +0000 (11:25 +0000)
their unaligned counterparts in debugging sections.

gas/ChangeLog
gas/config/tc-sparc.c

index 506f0fcc1df564916c435a036bf0c77f2f2df32a..8e45803314de4e3da22e04c76cdcd480d0510714 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-27  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/tc-sparc.c (tc_gen_reloc): Turn aligned relocs into
+       their unaligned counterparts in debugging sections.
+
 2006-11-24  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-spu.c (md_pseudo_table): Add eqv and .eqv.
index d6a1a15e731ea559039af01acf6b9b109ce43de4..c98081c959aabb27ba839fadc905565eac0c01c4 100644 (file)
@@ -3437,7 +3437,7 @@ md_apply_fix (fixP, valP, segment)
 
 arelent **
 tc_gen_reloc (section, fixp)
-     asection *section ATTRIBUTE_UNUSED;
+     asection *section;
      fixS *fixp;
 {
   static arelent *relocs[3];
@@ -3580,6 +3580,16 @@ tc_gen_reloc (section, fixp)
     }
 #endif /* defined (OBJ_ELF) || defined (OBJ_AOUT)  */
 
+  /* Nothing is aligned in DWARF debugging sections.  */
+  if (bfd_get_section_flags (stdoutput, section) & SEC_DEBUGGING)
+    switch (code)
+      {
+      case BFD_RELOC_16: code = BFD_RELOC_SPARC_UA16; break;
+      case BFD_RELOC_32: code = BFD_RELOC_SPARC_UA32; break;
+      case BFD_RELOC_64: code = BFD_RELOC_SPARC_UA64; break;
+      default: break;
+      }
+
   if (code == BFD_RELOC_SPARC_OLO10)
     reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_LO10);
   else