diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 50b246c44c8..ecbcbaca5fb 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elf32-fr30.c b/bfd/elf32-fr30.c
index 3cd100fba7b..8bd5b91c1b5 100644
--- a/bfd/elf32-fr30.c
+++ b/bfd/elf32-fr30.c
@@ -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 */
+ 
 };
 
 /* 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 *