aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1999-01-28 17:17:17 +0000
committerNick Clifton <nickc@redhat.com>1999-01-28 17:17:17 +0000
commit7b58591634b646821040def0d25083ae86bc1179 (patch)
treea1bfff799a13fdc9c0452ae7c6ff71b452869c59
parent98790d3a95fc58eb3e274a3cebb3e8f93a0ea528 (diff)
downloadgdb-7b58591634b646821040def0d25083ae86bc1179.zip
gdb-7b58591634b646821040def0d25083ae86bc1179.tar.gz
gdb-7b58591634b646821040def0d25083ae86bc1179.tar.bz2
Add support for ZVTINHERIT and VTENTRY relocs.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-fr30.c32
2 files changed, 37 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 50b246c..ecbcbac 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 3cd100f..8bd5b91 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 *