Undo previous delta
authorNick Clifton <nickc@redhat.com>
Fri, 27 Feb 2004 13:16:39 +0000 (13:16 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 27 Feb 2004 13:16:39 +0000 (13:16 +0000)
Fix underlying problem by changing the order of tests of rel->howto.

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

index b8b3d5e58bd4515f2de21b54cb6fb85e8bd06c9e..e41ed52920d28248f4ffc67f10107534ac62bbe2 100644 (file)
@@ -1,3 +1,9 @@
+2004-02-27  Nick Clifton  <nickc@redhat.com>
+
+       * config/tc-sh.c (get_operand): Revert previous delta.
+       (tc_gen_reloc): Check for an unknown reloc type before processing
+       the addend.
+
 2004-02-27  Hannes Reinecke  <hare@suse.de>
 
        * config/tc-s390.c (s390_insn): Correct range check for opcode in
index b2c3694c81089f2e194be06439f39cd8c5924b64..ca0e38d2a256a19ec79b79ad624c34df0c2758cb 100644 (file)
@@ -1426,8 +1426,6 @@ get_operand (char **ptr, sh_operand_info *op)
 
   if (src[0] == '#')
     {
-      if (! ISDIGIT (src[1]))
-       as_bad (_("syntax error in #Imm"));
       src++;
       *ptr = parse_exp (src, op);
       op->type = A_IMM;
@@ -4193,10 +4191,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
     rel->addend = 0;
 
   rel->howto = bfd_reloc_type_lookup (stdoutput, r_type);
-#ifdef OBJ_ELF
-  if (rel->howto->type == R_SH_IND12W)
-      rel->addend += fixp->fx_offset - 4;
-#endif
+
   if (rel->howto == NULL)
     {
       as_bad_where (fixp->fx_file, fixp->fx_line,
@@ -4206,6 +4201,10 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
       rel->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);
       assert (rel->howto != NULL);
     }
+#ifdef OBJ_ELF
+  else if (rel->howto->type == R_SH_IND12W)
+    rel->addend += fixp->fx_offset - 4;
+#endif
 
   return rel;
 }