diff options
author | Chris Demetriou <cgd@google.com> | 2009-02-06 19:20:10 +0000 |
---|---|---|
committer | Chris Demetriou <cgd@google.com> | 2009-02-06 19:20:10 +0000 |
commit | f073bbf7e0a9d7ebe5323c660b34c893c5dfedee (patch) | |
tree | 2a2c928d8b04dba0709b00826ab5f15552b10a2a /gold/errors.cc | |
parent | * lib/ld-lib.exp (check_gc_sections_available): Return 0 for (diff) | |
download | binutils-gdb-f073bbf7e0a9d7ebe5323c660b34c893c5dfedee.tar.gz binutils-gdb-f073bbf7e0a9d7ebe5323c660b34c893c5dfedee.tar.bz2 binutils-gdb-f073bbf7e0a9d7ebe5323c660b34c893c5dfedee.zip |
2009-02-06 Chris Demetriou <cgd@google.com>
* gold.h (gold_undefined_symbol): Change to take only a Symbol
pointer and to report location as the file name associated with
the symbol.
(gold_undefined_symbol_at_location): New function to replace the
old gold_undefined_symbol functionality.
* target-reloc.h (relocate_section): Update to use
gold_undefined_symbol_at_location.
* symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
Call gold_undefined_symbol function rather than gold_error.
* errors.h (Errors::undefined_symbol): Take location as a
string, rather than calculating it from a relocation.
* errors.cc (Errors::fatal): Print "fatal error:" before the
formatted message.
(Errors::error, Errors::error_at_location): Print "error: "
before the formatted message.
(Errors::undefined_symbol): Take location as a string, rather
than calculating it from a relocation.
(gold_undefined_symbol_at_location): New function akin to
old gold_undefined_symbol, calculates location from relocation.
(gold_undefined_symbol): Change to take only a Symbol pointer
and to report location as the file name associated with the symbol.
* testsuite/debug_msg.sh: Update for changed error messages.
* testsuite/undef_symbol.sh: Likewise.
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 01ce97f5eb9..d45d6a58b61 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. |