Undo md_apply_fix3 changes
authorMichael Meissner <gnu@the-meissners.org>
Wed, 27 Sep 1995 15:37:54 +0000 (15:37 +0000)
committerMichael Meissner <gnu@the-meissners.org>
Wed, 27 Sep 1995 15:37:54 +0000 (15:37 +0000)
gas/ChangeLog
gas/config/tc-ppc.c

index 987bc300e1864978ce0a45e12b84da19a9f2b7f0..fa9ecc6caedb054a8e90ae24503c8ee0fa3a56d5 100644 (file)
@@ -1,3 +1,8 @@
+Wed Sep 27 11:33:38 1995  Michael Meissner  <meissner@tiktok.cygnus.com>
+
+       * config/tc-ppc.c (md_apply_fix3): Remove Sep 26 changes to this
+       function, keeping other Sep. 26 changes.
+
 Wed Sep 27 10:29:13 1995  Kim Knuttila  <krk@nellie>
 
        * configure (emulations): Added support for ppcle-*-[pe|winnt]
index df9ef85a4b82caf45056a809ac4fc8f084d13164..095dd8a6a63e93aa09c4359201967bf2c0d0006c 100644 (file)
@@ -3681,8 +3681,6 @@ md_apply_fix3 (fixp, valuep, seg)
      segT seg;
 {
   valueT value;
-  char *where;
-  unsigned long insn;
 
   /* FIXME FIXME FIXME: The value we are passed in *valuep includes
      the symbol values.  Since we are using BFD_ASSEMBLER, if we are
@@ -3722,6 +3720,8 @@ md_apply_fix3 (fixp, valuep, seg)
     {
       int opindex;
       const struct powerpc_operand *operand;
+      char *where;
+      unsigned long insn;
 
       opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
 
@@ -3819,13 +3819,42 @@ md_apply_fix3 (fixp, valuep, seg)
 #endif
       switch (fixp->fx_r_type)
        {
-       case BFD_RELOC_32:      /* fixup errant PC relative relocations */
+       case BFD_RELOC_32:
        case BFD_RELOC_CTOR:
          if (fixp->fx_pcrel)
            {
              fixp->fx_r_type = BFD_RELOC_32_PCREL;
              value += fixp->fx_frag->fr_address + fixp->fx_where;
-           }
+           }                   /* fall through */
+
+       case BFD_RELOC_32_PCREL:
+         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+                             value, 4);
+         break;
+
+       case BFD_RELOC_LO16:
+       case BFD_RELOC_HI16:
+       case BFD_RELOC_HI16_S:
+       case BFD_RELOC_PPC_TOC16:
+       case BFD_RELOC_16:
+       case BFD_RELOC_GPREL16:
+         if (fixp->fx_pcrel)
+           abort ();
+
+         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+                             value, 2);
+         break;
+
+       case BFD_RELOC_8:
+         if (fixp->fx_pcrel)
+           abort ();
+
+         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+                             value, 1);
+         break;
+
+       default:
+         abort ();
        }
     }