diff options
author | DJ Delorie <dj@redhat.com> | 2011-01-05 22:04:09 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2011-01-05 22:04:09 +0000 |
commit | 9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7 (patch) | |
tree | e2a00970cbc6d62f3b8a0744880ccb593689cbe3 | |
parent | 35cc6a0b56fb7b256bce90a9c42a50af9a5df5b4 (diff) | |
download | binutils-9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7.zip binutils-9689e3a3a7895308b7b2eac3fa6e4d560cf4b8c7.tar.gz binutils-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.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 1 | ||||
-rw-r--r-- | bfd/elf32-rx.c | 1 | ||||
-rw-r--r-- | bfd/libbfd.h | 1 | ||||
-rw-r--r-- | bfd/reloc.c | 2 | ||||
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-rx.c | 18 |
7 files changed, 35 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0369051..eb99588 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2011-01-05 DJ Delorie <dj@redhat.com> + + * 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. + 2011-01-03 H.J. Lu <hongjiu.lu@intel.com> * cpu-i386.c (bfd_i386_compatible): New. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index e75eb0d..8531f8d 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -3991,6 +3991,7 @@ instructions */ BFD_RELOC_RX_GPRELL, BFD_RELOC_RX_SYM, BFD_RELOC_RX_OP_SUBTRACT, + BFD_RELOC_RX_OP_NEG, BFD_RELOC_RX_ABS8, BFD_RELOC_RX_ABS16, BFD_RELOC_RX_ABS16_REV, diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c index ac587ef..7855d5e 100644 --- a/bfd/elf32-rx.c +++ b/bfd/elf32-rx.c @@ -248,6 +248,7 @@ static const struct rx_reloc_map rx_reloc_map [] = { BFD_RELOC_RX_RELAX, R_RX_RH_RELAX }, { BFD_RELOC_RX_SYM, R_RX_SYM }, { BFD_RELOC_RX_OP_SUBTRACT, R_RX_OPsub }, + { BFD_RELOC_RX_OP_NEG, R_RX_OPneg }, { BFD_RELOC_RX_ABS8, R_RX_ABS8 }, { BFD_RELOC_RX_ABS16, R_RX_ABS16 }, { BFD_RELOC_RX_ABS16_REV, R_RX_ABS16_REV }, diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 5687082..1cf63ce 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -1800,6 +1800,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_RX_GPRELL", "BFD_RELOC_RX_SYM", "BFD_RELOC_RX_OP_SUBTRACT", + "BFD_RELOC_RX_OP_NEG", "BFD_RELOC_RX_ABS8", "BFD_RELOC_RX_ABS16", "BFD_RELOC_RX_ABS16_REV", diff --git a/bfd/reloc.c b/bfd/reloc.c index 6d4eb85..30919f2 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -4258,6 +4258,8 @@ ENUMX ENUMX BFD_RELOC_RX_OP_SUBTRACT ENUMX + BFD_RELOC_RX_OP_NEG +ENUMX BFD_RELOC_RX_ABS8 ENUMX BFD_RELOC_RX_ABS16 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; |