aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-xstormy16.c21
2 files changed, 17 insertions, 12 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2499af2..af0b049 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2003-05-22 Nick Clifton <nickc@redhat.com>
+
+ * config/tc-xstormy16.c (md_pcrel_from_section): Do not produce
+ section relative offsets for relocs that will not be based on the
+ section symbol.
+ (xstormy16_md_apply_fix3): Remove previous patch to this
+ function.
+
2003-05-07 Eric Christopher <echristo@redhat.com>
* config/tc-mips.c (mips_abicalls): New variable.
diff --git a/gas/config/tc-xstormy16.c b/gas/config/tc-xstormy16.c
index df98920..83ae94d 100644
--- a/gas/config/tc-xstormy16.c
+++ b/gas/config/tc-xstormy16.c
@@ -330,12 +330,13 @@ md_pcrel_from_section (fixP, sec)
{
if (fixP->fx_addsy != (symbolS *) NULL
&& (! S_IS_DEFINED (fixP->fx_addsy)
- || S_GET_SEGMENT (fixP->fx_addsy) != sec))
- {
- /* The symbol is undefined (or is defined but not in this section).
- Let the linker figure it out. */
- return 0;
- }
+ || S_GET_SEGMENT (fixP->fx_addsy) != sec)
+ || xstormy16_force_relocation (fixP))
+ /* The symbol is undefined,
+ or it is defined but not in this section,
+ or the relocation will be relative to this symbol not the section symbol.
+ Let the linker figure it out. */
+ return 0;
return fixP->fx_frag->fr_address + fixP->fx_where;
}
@@ -581,12 +582,8 @@ xstormy16_md_apply_fix3 (fixP, valueP, seg)
/* Tuck `value' away for use by tc_gen_reloc.
See the comment describing fx_addnumber in write.h.
- This field is misnamed (or misused :-).
- We do not do this for pc-relative relocs against a
- defined symbol, since it will be done for us. */
- if ((! fixP->fx_pcrel)
- || (fixP->fx_addsy && ! S_IS_DEFINED (fixP->fx_addsy)))
- fixP->fx_addnumber += value;
+ This field is misnamed (or misused :-). */
+ fixP->fx_addnumber += value;
}