summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2004-02-27 13:16:39 +0000
committerNick Clifton <nickc@redhat.com>2004-02-27 13:16:39 +0000
commit864ecc1be9e8340f6b92a9ece92a266d59a9d85d (patch)
tree22f2acdb3f589f8a9dead9d4fa07b9e6f1b02d08
parent500cd58fe98b2bc9c2566760e11efbfa073e57b5 (diff)
downloadbinutils-redhat-864ecc1be9e8340f6b92a9ece92a266d59a9d85d.tar.gz
Undo previous delta
Fix underlying problem by changing the order of tests of rel->howto.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-sh.c11
2 files changed, 11 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b8b3d5e58b..e41ed52920 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c
index b2c3694c81..ca0e38d2a2 100644
--- a/gas/config/tc-sh.c
+++ b/gas/config/tc-sh.c
@@ -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;
}