diff options
Diffstat (limited to 'gold/errors.cc')
-rw-r--r-- | gold/errors.cc | 63 |
1 files changed, 37 insertions, 26 deletions
diff --git a/gold/errors.cc b/gold/errors.cc index 01ce97f5eb..d45d6a58b6 100644 --- a/gold/errors.cc +++ b/gold/errors.cc @@ -80,7 +80,7 @@ Errors::increment_counter(int *counter) void Errors::fatal(const char* format, va_list args) { - fprintf(stderr, "%s: ", this->program_name_); + fprintf(stderr, _("%s: fatal error: "), this->program_name_); vfprintf(stderr, format, args); fputc('\n', stderr); gold_exit(false); @@ -91,7 +91,7 @@ Errors::fatal(const char* format, va_list args) void Errors::error(const char* format, va_list args) { - fprintf(stderr, "%s: ", this->program_name_); + fprintf(stderr, _("%s: error: "), this->program_name_); vfprintf(stderr, format, args); fputc('\n', stderr); @@ -127,7 +127,7 @@ Errors::error_at_location(const Relocate_info<size, big_endian>* relinfo, size_t relnum, off_t reloffset, const char* format, va_list args) { - fprintf(stderr, "%s: %s: ", this->program_name_, + fprintf(stderr, _("%s: %s: error: "), this->program_name_, relinfo->location(relnum, reloffset).c_str()); vfprintf(stderr, format, args); fputc('\n', stderr); @@ -151,13 +151,10 @@ Errors::warning_at_location(const Relocate_info<size, big_endian>* relinfo, this->increment_counter(&this->warning_count_); } -// Issue an undefined symbol error. +// Issue an undefined symbol error with a caller-supplied location string. -template<int size, bool big_endian> void -Errors::undefined_symbol(const Symbol* sym, - const Relocate_info<size, big_endian>* relinfo, - size_t relnum, off_t reloffset) +Errors::undefined_symbol(const Symbol* sym, const std::string& location) { bool initialized = this->initialize_lock(); gold_assert(initialized); @@ -169,12 +166,13 @@ Errors::undefined_symbol(const Symbol* sym, } const char* const version = sym->version(); if (version == NULL) - fprintf(stderr, _("%s: %s: undefined reference to '%s'\n"), - this->program_name_, relinfo->location(relnum, reloffset).c_str(), + fprintf(stderr, _("%s: %s: error: undefined reference to '%s'\n"), + this->program_name_, location.c_str(), sym->demangled_name().c_str()); else - fprintf(stderr, _("%s: %s: undefined reference to '%s', version '%s'\n"), - this->program_name_, relinfo->location(relnum, reloffset).c_str(), + fprintf(stderr, + _("%s: %s: error: undefined reference to '%s', version '%s'\n"), + this->program_name_, location.c_str(), sym->demangled_name().c_str(), version); } @@ -271,13 +269,22 @@ gold_warning_at_location(const Relocate_info<size, big_endian>* relinfo, // Report an undefined symbol. +void +gold_undefined_symbol(const Symbol* sym) +{ + parameters->errors()->undefined_symbol(sym, sym->object()->name().c_str()); +} + +// Report an undefined symbol at a reloc location + template<int size, bool big_endian> void -gold_undefined_symbol(const Symbol* sym, +gold_undefined_symbol_at_location(const Symbol* sym, const Relocate_info<size, big_endian>* relinfo, size_t relnum, off_t reloffset) { - parameters->errors()->undefined_symbol(sym, relinfo, relnum, reloffset); + parameters->errors()->undefined_symbol(sym, + relinfo->location(relnum, reloffset)); } #ifdef HAVE_TARGET_32_LITTLE @@ -347,33 +354,37 @@ gold_warning_at_location<64, true>(const Relocate_info<64, true>* relinfo, #ifdef HAVE_TARGET_32_LITTLE template void -gold_undefined_symbol<32, false>(const Symbol* sym, - const Relocate_info<32, false>* relinfo, - size_t relnum, off_t reloffset); +gold_undefined_symbol_at_location<32, false>( + const Symbol* sym, + const Relocate_info<32, false>* relinfo, + size_t relnum, off_t reloffset); #endif #ifdef HAVE_TARGET_32_BIG template void -gold_undefined_symbol<32, true>(const Symbol* sym, - const Relocate_info<32, true>* relinfo, - size_t relnum, off_t reloffset); +gold_undefined_symbol_at_location<32, true>( + const Symbol* sym, + const Relocate_info<32, true>* relinfo, + size_t relnum, off_t reloffset); #endif #ifdef HAVE_TARGET_64_LITTLE template void -gold_undefined_symbol<64, false>(const Symbol* sym, - const Relocate_info<64, false>* relinfo, - size_t relnum, off_t reloffset); +gold_undefined_symbol_at_location<64, false>( + const Symbol* sym, + const Relocate_info<64, false>* relinfo, + size_t relnum, off_t reloffset); #endif #ifdef HAVE_TARGET_64_BIG template void -gold_undefined_symbol<64, true>(const Symbol* sym, - const Relocate_info<64, true>* relinfo, - size_t relnum, off_t reloffset); +gold_undefined_symbol_at_location<64, true>( + const Symbol* sym, + const Relocate_info<64, true>* relinfo, + size_t relnum, off_t reloffset); #endif } // End namespace gold. |