diff options
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-xstormy16.c | 21 |
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; } |