From ceb410091e5f0cceca4c70d553b9c3ff49aea929 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 22 May 2003 08:57:32 +0000 Subject: [PATCH] Do not producesection relative offsets for relocs that will not be based on the section symbol. --- gas/ChangeLog | 8 ++++++++ gas/config/tc-xstormy16.c | 21 +++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2499af20efe..af0b0490007 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2003-05-22 Nick Clifton + + * 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 * config/tc-mips.c (mips_abicalls): New variable. diff --git a/gas/config/tc-xstormy16.c b/gas/config/tc-xstormy16.c index df989209140..83ae94d382a 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; } -- 2.30.2