diff options
author | Alan Modra <amodra@gmail.com> | 2013-02-05 23:02:54 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2013-02-05 23:02:54 +0000 |
commit | 94d4433aa6a50ca4258164e33f6f46fdf4637346 (patch) | |
tree | b29a82651f76816b2117543f06f26b7e8d8e2756 /gas/config/tc-avr.h | |
parent | 21c238470a68b04bc286f4aa09a02e3a6596802b (diff) | |
download | gdb-94d4433aa6a50ca4258164e33f6f46fdf4637346.zip gdb-94d4433aa6a50ca4258164e33f6f46fdf4637346.tar.gz gdb-94d4433aa6a50ca4258164e33f6f46fdf4637346.tar.bz2 |
PR gas/14255
* config/tc-avr.h (TC_VALIDATE_FIX): Mark symbol used by reloc.
Don't skip fixups with fx_subsy non-NULL.
* config/tc-avr.c (tc_gen_reloc): Don't specially handle fixups
with fx_subsy non-NULL.
Diffstat (limited to 'gas/config/tc-avr.h')
-rw-r--r-- | gas/config/tc-avr.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gas/config/tc-avr.h b/gas/config/tc-avr.h index e82bd01..ee36e65 100644 --- a/gas/config/tc-avr.h +++ b/gas/config/tc-avr.h @@ -125,9 +125,9 @@ extern long md_pcrel_from_section (struct fix *, segT); /* We don't want gas to fixup the following program memory related relocations. We will need them in case that we want to do linker relaxation. We could in principle keep these fixups in gas when not relaxing. - However, there is no serious performance penilty when making the linker + However, there is no serious performance penalty when making the linker make the fixup work. Check also that fx_addsy is not NULL, in order to make - sure that the fixup refers to some sort of lable. */ + sure that the fixup refers to some sort of label. */ #define TC_VALIDATE_FIX(FIXP,SEG,SKIP) \ if ( (FIXP->fx_r_type == BFD_RELOC_AVR_7_PCREL \ || FIXP->fx_r_type == BFD_RELOC_AVR_13_PCREL \ @@ -143,9 +143,11 @@ extern long md_pcrel_from_section (struct fix *, segT); || FIXP->fx_r_type == BFD_RELOC_AVR_8_HI \ || FIXP->fx_r_type == BFD_RELOC_AVR_8_HLO \ || FIXP->fx_r_type == BFD_RELOC_AVR_16_PM) \ - && (FIXP->fx_addsy)) \ - { \ - goto SKIP; \ + && FIXP->fx_addsy != NULL \ + && FIXP->fx_subsy == NULL) \ + { \ + symbol_mark_used_in_reloc (FIXP->fx_addsy); \ + goto SKIP; \ } /* This target is buggy, and sets fix size too large. */ |