aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-avr.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2013-02-05 23:02:54 +0000
committerAlan Modra <amodra@gmail.com>2013-02-05 23:02:54 +0000
commit94d4433aa6a50ca4258164e33f6f46fdf4637346 (patch)
treeb29a82651f76816b2117543f06f26b7e8d8e2756 /gas/config/tc-avr.c
parent21c238470a68b04bc286f4aa09a02e3a6596802b (diff)
downloadgdb-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.c')
-rw-r--r--gas/config/tc-avr.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/gas/config/tc-avr.c b/gas/config/tc-avr.c
index c693120..0bc972e 100644
--- a/gas/config/tc-avr.c
+++ b/gas/config/tc-avr.c
@@ -1386,29 +1386,9 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED,
{
arelent *reloc;
- if (fixp->fx_addsy && fixp->fx_subsy)
+ if (fixp->fx_subsy != NULL)
{
- long value = 0;
-
- if ((S_GET_SEGMENT (fixp->fx_addsy) != S_GET_SEGMENT (fixp->fx_subsy))
- || S_GET_SEGMENT (fixp->fx_addsy) == undefined_section)
- {
- as_bad_where (fixp->fx_file, fixp->fx_line,
- "Difference of symbols in different sections is not supported");
- return NULL;
- }
-
- /* We are dealing with two symbols defined in the same section.
- Let us fix-up them here. */
- value += S_GET_VALUE (fixp->fx_addsy);
- value -= S_GET_VALUE (fixp->fx_subsy);
-
- /* When fx_addsy and fx_subsy both are zero, md_apply_fix
- only takes it's second operands for the fixup value. */
- fixp->fx_addsy = NULL;
- fixp->fx_subsy = NULL;
- md_apply_fix (fixp, (valueT *) &value, NULL);
-
+ as_bad_where (fixp->fx_file, fixp->fx_line, _("expression too complex"));
return NULL;
}