diff options
author | Cary Coutant <ccoutant@google.com> | 2013-05-21 21:14:40 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2013-05-21 21:14:40 +0000 |
commit | 93acabad6a0ff499e4e18d44c41292ef48cde104 (patch) | |
tree | d55f28e87a4dbb111513e6eb08885faeaf941604 /gold/target-reloc.h | |
parent | 60e8b3fccd5e6748c420c7ae5d78917af26345fc (diff) | |
download | gdb-93acabad6a0ff499e4e18d44c41292ef48cde104.zip gdb-93acabad6a0ff499e4e18d44c41292ef48cde104.tar.gz gdb-93acabad6a0ff499e4e18d44c41292ef48cde104.tar.bz2 |
gold/
* symtab.h (Symbol::is_cxx_vtable): New function.
* target-reloc.h (relocate_section): Check for vtable symbol.
* testsuite/Makefile.am (missing_key_func.sh): New test case.
* testsuite/Makefile.in: Regenerate.
* testsuite/missing_key_func.cc: New test source.
* testsuite/missing_key_func.sh: New test script.
Diffstat (limited to 'gold/target-reloc.h')
-rw-r--r-- | gold/target-reloc.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gold/target-reloc.h b/gold/target-reloc.h index cf5e389..b544c78 100644 --- a/gold/target-reloc.h +++ b/gold/target-reloc.h @@ -411,7 +411,13 @@ relocate_section( } if (issue_undefined_symbol_error(sym)) - gold_undefined_symbol_at_location(sym, relinfo, i, offset); + { + gold_undefined_symbol_at_location(sym, relinfo, i, offset); + if (sym->is_cxx_vtable()) + gold_info(_("%s: the vtable symbol may be undefined because " + "the class is missing its key function"), + program_name); + } else if (sym != NULL && sym->visibility() != elfcpp::STV_DEFAULT && (sym->is_undefined() || sym->is_from_dynobj())) |