aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-m68k.c17
2 files changed, 20 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9cd3ed0..c3a423d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2001-01-25 Nick Clifton <nickc@redhat.com>
+
+ * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is
+ still set. Issue an error message instead.
+ (md_estimate_size_before_relax): Delete unused variable
+ 'buffer_address'. Fixup parentheses around if statement.
+
2001-01-23 Kazu Hirata <kazu@hxi.com>
* as.c: Fix formatting.
diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c
index efd015f..7b1926c 100644
--- a/gas/config/tc-m68k.c
+++ b/gas/config/tc-m68k.c
@@ -874,8 +874,18 @@ tc_gen_reloc (section, fixp)
arelent *reloc;
bfd_reloc_code_real_type code;
+ /* If the tcbit is set, then this was a fixup of a negative value
+ that was never resolved. We do not have a reloc to handle this,
+ so just return. We assume that other code will have detected this
+ situation and produced a helpful error message, so we just tell the
+ user that the reloc cannot be produced. */
if (fixp->fx_tcbit)
- abort ();
+ {
+ if (fixp->fx_addsy)
+ as_bad (_("Unable to produce reloc against symbol '%s'"),
+ S_GET_NAME (fixp->fx_addsy));
+ return NULL;
+ }
if (fixp->fx_r_type != BFD_RELOC_NONE)
{
@@ -4564,7 +4574,6 @@ md_estimate_size_before_relax (fragP, segment)
segT segment;
{
int old_fix;
- register char *buffer_address = fragP->fr_fix + fragP->fr_literal;
old_fix = fragP->fr_fix;
@@ -4652,8 +4661,8 @@ md_estimate_size_before_relax (fragP, segment)
case TAB (DBCCLBR, SZ_UNDEF):
case TAB (DBCCABSJ, SZ_UNDEF):
{
- if (S_GET_SEGMENT (fragP->fr_symbol) == segment
- && relaxable_symbol (fragP->fr_symbol)
+ if ((S_GET_SEGMENT (fragP->fr_symbol) == segment
+ && relaxable_symbol (fragP->fr_symbol))
|| flag_short_refs)
{
fragP->fr_subtype = TAB (TABTYPE (fragP->fr_subtype), SHORT);