aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2011-01-05 22:04:09 +0000
committerDJ Delorie <dj@redhat.com>2011-01-05 22:04:09 +0000
commit9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7 (patch)
treee2a00970cbc6d62f3b8a0744880ccb593689cbe3 /gas
parent35cc6a0b56fb7b256bce90a9c42a50af9a5df5b4 (diff)
downloadgdb-9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7.zip
gdb-9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7.tar.gz
gdb-9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7.tar.bz2
* reloc.c: Add BFD_RELOC_RX_OP_NEG.
* libbfd.h: Regenerate. * bfd-in2.h: Regenerate. * elf32-rx.c: Add it to the list, corresponding to R_RX_OPneg. * config/tc-rx.c (tc_gen_reloc): Emit an RX_OP_NEG expression instead of an RH_NEG32 one.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-rx.c18
2 files changed, 23 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0097e8f..257c830 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-05 DJ Delorie <dj@redhat.com>
+
+ * config/tc-rx.c (tc_gen_reloc): Emit an RX_OP_NEG expression
+ instead of an RH_NEG32 one.
+
2011-01-05 Jonathan Wakely <jwakely.gcc@gmail.com>
* doc/c-i386.texi: Clarify --n32.
diff --git a/gas/config/tc-rx.c b/gas/config/tc-rx.c
index aa58286..d198050 100644
--- a/gas/config/tc-rx.c
+++ b/gas/config/tc-rx.c
@@ -2405,6 +2405,24 @@ tc_gen_reloc (asection * seg ATTRIBUTE_UNUSED, fixS * fixp)
reloc[4] = NULL;
break;
+ case BFD_RELOC_RX_NEG32:
+ reloc[0]->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_RX_SYM);
+
+ reloc[1] = (arelent *) xmalloc (sizeof (arelent));
+ reloc[1]->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_RX_OP_NEG);
+ reloc[1]->addend = 0;
+ reloc[1]->sym_ptr_ptr = reloc[0]->sym_ptr_ptr;
+ reloc[1]->address = fixp->fx_frag->fr_address + fixp->fx_where;
+
+ reloc[2] = (arelent *) xmalloc (sizeof (arelent));
+ reloc[2]->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_RX_ABS32);
+ reloc[2]->addend = 0;
+ reloc[2]->sym_ptr_ptr = reloc[0]->sym_ptr_ptr;
+ reloc[2]->address = fixp->fx_frag->fr_address + fixp->fx_where;
+
+ reloc[3] = NULL;
+ break;
+
default:
reloc[0]->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
reloc[1] = NULL;