* reloc.c: Add BFD_RELOC_RX_OP_NEG.
authorDJ Delorie <dj@redhat.com>
Wed, 5 Jan 2011 22:04:09 +0000 (22:04 +0000)
committerDJ Delorie <dj@redhat.com>
Wed, 5 Jan 2011 22:04:09 +0000 (22:04 +0000)
* 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.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-rx.c
bfd/libbfd.h
bfd/reloc.c
gas/ChangeLog
gas/config/tc-rx.c

index 0369051236b8c1b2c81f5f4d4c9ea82c5210a63e..eb99588945571031255b12a81b95f7ab0d8332b2 100644 (file)
@@ -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.
index e75eb0d409e54153114a3f1deca864d5cd3874ac..8531f8de5295a9f7cdd6d51a361ebda020b720a5 100644 (file)
@@ -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,
index ac587efcaa4238b240247b6b74aa788bd870d4f2..7855d5ed149c7d98b5c3f2b600f3a8c314f70856 100644 (file)
@@ -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 },
index 5687082c468aaa9398f10b80dd0adb72deda51d7..1cf63ceec4df87c502ee27eeaf98e481ee31f59c 100644 (file)
@@ -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",
index 6d4eb85232b7352850e864c60d2ed01841a67a7b..30919f2662c87504cc30e32efae7a90a4b3ed07e 100644 (file)
@@ -4257,6 +4257,8 @@ ENUMX
   BFD_RELOC_RX_SYM
 ENUMX
   BFD_RELOC_RX_OP_SUBTRACT
+ENUMX
+  BFD_RELOC_RX_OP_NEG
 ENUMX
   BFD_RELOC_RX_ABS8
 ENUMX
index 0097e8fdb7e1859ed54d639f6d1d44f8e04551d5..257c83089d3775343928bc0b5e181b7b336fb775 100644 (file)
@@ -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.
index aa582869d589f0635d93040e61728432fd99b7f7..d1980509823da223f0adb11912d2760a9625cdc6 100644 (file)
@@ -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;