Add support for ZVTINHERIT and VTENTRY relocs.
authorNick Clifton <nickc@redhat.com>
Thu, 28 Jan 1999 17:17:17 +0000 (17:17 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 28 Jan 1999 17:17:17 +0000 (17:17 +0000)
bfd/ChangeLog
bfd/elf32-fr30.c

index 50b246c..ecbcbac 100644 (file)
@@ -1,3 +1,8 @@
+1999-01-28  Nick Clifton  <nickc@cygnus.com>
+
+       * elf32-fr30.c (fr30_reloc_map): Add R_FR30_GNU_VTINHERIT and
+       R_FR30_GNU_VTENTRY relocs.
+
 Thu Jan 28 11:08:16 1999  Catherine Moore  <clm@cygnus.com>
 
        * elflink.h (elf_link_output_sym):  Zero syms which are
index 3cd100f..8bd5b91 100644 (file)
@@ -203,6 +203,36 @@ static reloc_howto_type fr30_elf_howto_table [] =
         0x0000,                /* src_mask */
         0x07ff,                /* dst_mask */
         false),                /* pcrel_offset */
+  /* GNU extension to record C++ vtable hierarchy */
+  HOWTO (R_FR30_GNU_VTINHERIT, /* type */
+         0,                     /* rightshift */
+         2,                     /* size (0 = byte, 1 = short, 2 = long) */
+         0,                     /* bitsize */
+         false,                 /* pc_relative */
+         0,                     /* bitpos */
+         complain_overflow_dont, /* complain_on_overflow */
+         NULL,                  /* special_function */
+         "R_FR30_GNU_VTINHERIT", /* name */
+         false,                 /* partial_inplace */
+         0,                     /* src_mask */
+         0,                     /* dst_mask */
+         false),                /* pcrel_offset */
+
+  /* GNU extension to record C++ vtable member usage */
+  HOWTO (R_FR30_GNU_VTENTRY,     /* type */
+         0,                     /* rightshift */
+         2,                     /* size (0 = byte, 1 = short, 2 = long) */
+         0,                     /* bitsize */
+         false,                 /* pc_relative */
+         0,                     /* bitpos */
+         complain_overflow_dont, /* complain_on_overflow */
+         _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
+         "R_FR30_GNU_VTENTRY",   /* name */
+         false,                 /* partial_inplace */
+         0,                     /* src_mask */
+         0,                     /* dst_mask */
+         false),                /* pcrel_offset */
 };
 \f
 /* Utility to actually perform an R_FR30_20 reloc.  */
@@ -313,6 +343,8 @@ static const struct fr30_reloc_map fr30_reloc_map [] =
   { BFD_RELOC_FR30_10_IN_8,   R_FR30_10_IN_8 },
   { BFD_RELOC_FR30_9_PCREL,   R_FR30_9_PCREL },
   { BFD_RELOC_FR30_12_PCREL,  R_FR30_12_PCREL },
+  { BFD_RELOC_VTABLE_INHERIT, R_FR30_GNU_VTINHERIT },
+  { BFD_RELOC_VTABLE_ENTRY,   R_FR30_GNU_VTENTRY },
 };
 
 static reloc_howto_type *