Add 16 bit R_RBA.
authorTom Rix <trix@redhat.com>
Fri, 31 May 2002 01:07:21 +0000 (01:07 +0000)
committerTom Rix <trix@redhat.com>
Fri, 31 May 2002 01:07:21 +0000 (01:07 +0000)
bfd/ChangeLog
bfd/coff-rs6000.c
bfd/coff64-rs6000.c

index 9cc751838b853b4d31cf5d26168c4c17c01fc2d9..e2073997d15a51681f2b12ae558ac4305013438f 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-30  Tom Rix  <trix@redhat.com>
+
+       * coff-rs6000.c (xcoff_rtype2howto): Handle 16 bit R_RBA.
+       * coff64-rs6000.c (xcoff64_rtype2howto): Same.
+
 2002-05-30  Richard Henderson  <rth@redhat.com>
 
        * elf64-alpha.c (ALPHA_ELF_LINK_HASH_LU_TLSGD,
index f560c7f19683ab210ffa4e475633942fdb38aace..6d5597875aa2e16292e8c1723381ba7289f9b25d 100644 (file)
@@ -948,6 +948,21 @@ reloc_howto_type xcoff_howto_table[] =
         0xffff,                /* dst_mask */
         false),                /* pcrel_offset */
 
+  /* Modifiable branch relative.  */
+  HOWTO (R_RBA,                        /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        false,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        0,                     /* special_function */
+        "R_RBA_16",            /* name */
+        true,                  /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        false),                /* pcrel_offset */
+
 };
 
 void
@@ -968,6 +983,8 @@ xcoff_rtype2howto (relent, internal)
        relent->howto = &xcoff_howto_table[0x1c];
       else if (R_RBR == internal->r_type) 
        relent->howto = &xcoff_howto_table[0x1d];
+      else if (R_RBA == internal->r_type) 
+       relent->howto = &xcoff_howto_table[0x1e];
     }
   
   /* The r_size field of an XCOFF reloc encodes the bitsize of the
index d13fa0ff6790a460c4c0517597c42d2ff6c90885..068b2c20aa1a4486bc58a75342ef10f05887f0d1 100644 (file)
@@ -1730,6 +1730,22 @@ reloc_howto_type xcoff64_howto_table[] =
         0xffff,                /* src_mask */
         0xffff,                /* dst_mask */
         false),                /* pcrel_offset */
+
+  /* Modifiable branch absolute.  */
+  HOWTO (R_RBA,                        /* type */
+        0,                     /* rightshift */
+        1,                     /* size (0 = byte, 1 = short, 2 = long) */
+        16,                    /* bitsize */
+        false,                 /* pc_relative */
+        0,                     /* bitpos */
+        complain_overflow_bitfield, /* complain_on_overflow */
+        0,                     /* special_function */
+        "R_RBA_16",            /* name */
+        true,                  /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        false),                /* pcrel_offset */
+
 };
 
 void
@@ -1750,6 +1766,8 @@ xcoff64_rtype2howto (relent, internal)
        relent->howto = &xcoff64_howto_table[0x1d];
       else if (R_RBR == internal->r_type) 
        relent->howto = &xcoff64_howto_table[0x1e];
+      else if (R_RBA == internal->r_type) 
+       relent->howto = &xcoff64_howto_table[0x1f];
     }
   /* Special case 32 bit */
   else if (31 == (internal->r_size & 0x3f))