From 1a221d3d9cc474b8a382f6aeed56671d10b71473 Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Wed, 5 Feb 2014 22:59:02 -0800 Subject: Fix issues with gold undefined symbol diagnostics. PR binutils/15435 complains that gold issues a visibility error for an weak undefined symbol with hidden visibility. The message should be suppressed if the symbol is a weak undef. An earlier patch to add an extra note about key functions when a class's vtable symbol is undefined missed a case where the reference to the vtable came from a shared library. This patch moves the check to a lower-level routine that catches both cases. gold/ 2014-02-05 Cary Coutant * errors.cc (Errors::undefined_symbol): Move undef vtable symbol check to here. * target-reloc.h (is_strong_undefined): New function. (relocate_section): Move undef vtable symbol check from here. Check for is_strong_undefined. --- gold/errors.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gold/errors.cc') diff --git a/gold/errors.cc b/gold/errors.cc index b79764b..98db0fd 100644 --- a/gold/errors.cc +++ b/gold/errors.cc @@ -193,6 +193,11 @@ Errors::undefined_symbol(const Symbol* sym, const std::string& location) fprintf(stderr, _("%s: %s: undefined reference to '%s', version '%s'\n"), location.c_str(), zmsg, sym->demangled_name().c_str(), version); + + if (sym->is_cxx_vtable()) + gold_info(_("%s: the vtable symbol may be undefined because " + "the class is missing its key function"), + program_name); } // Issue a debugging message. -- cgit v1.1