OLD | NEW |
1 // symtab.cc -- the gold symbol table | 1 // symtab.cc -- the gold symbol table |
2 | 2 |
3 // Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. | 3 // Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
4 // Written by Ian Lance Taylor <iant@google.com>. | 4 // Written by Ian Lance Taylor <iant@google.com>. |
5 | 5 |
6 // This file is part of gold. | 6 // This file is part of gold. |
7 | 7 |
8 // This program is free software; you can redistribute it and/or modify | 8 // This program is free software; you can redistribute it and/or modify |
9 // it under the terms of the GNU General Public License as published by | 9 // it under the terms of the GNU General Public License as published by |
10 // the Free Software Foundation; either version 3 of the License, or | 10 // the Free Software Foundation; either version 3 of the License, or |
(...skipping 2709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2720 const std::set<std::string> &exceptions) const | 2720 const std::set<std::string> &exceptions) const |
2721 { | 2721 { |
2722 const char* const real_prefix = "__real_"; | 2722 const char* const real_prefix = "__real_"; |
2723 int undef_count = 0; | 2723 int undef_count = 0; |
2724 for (Symbol_table_type::const_iterator p = this->table_.begin(); | 2724 for (Symbol_table_type::const_iterator p = this->table_.begin(); |
2725 p != this->table_.end(); | 2725 p != this->table_.end(); |
2726 ++p) | 2726 ++p) |
2727 { | 2727 { |
2728 Symbol *sym = p->second; | 2728 Symbol *sym = p->second; |
2729 if (sym->is_undefined() && | 2729 if (sym->is_undefined() && |
| 2730 sym->in_reg() && |
2730 sym->binding() != elfcpp::STB_WEAK && | 2731 sym->binding() != elfcpp::STB_WEAK && |
2731 exceptions.count(sym->name()) == 0 && | 2732 exceptions.count(sym->name()) == 0 && |
2732 // @TODO(pdox): If --wrap is to be a supported user-visible feature, | 2733 // @TODO(pdox): If --wrap is to be a supported user-visible feature, |
2733 // then it should be implemented properly in the LLVM plugin. | 2734 // then it should be implemented properly in the LLVM plugin. |
2734 // For now, since we need to use --wrap for the self-build, just | 2735 // For now, since we need to use --wrap for the self-build, just |
2735 // ignore the undefined symbols that result from --wrap. | 2736 // ignore the undefined symbols that result from --wrap. |
2736 strncmp(sym->name(), real_prefix, strlen(real_prefix)) != 0) | 2737 strncmp(sym->name(), real_prefix, strlen(real_prefix)) != 0) |
2737 { | 2738 { |
2738 gold_undefined_symbol(sym); | 2739 gold_undefined_symbol(sym); |
2739 undef_count++; | 2740 undef_count++; |
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3566 | 3567 |
3567 #ifdef HAVE_TARGET_64_BIG | 3568 #ifdef HAVE_TARGET_64_BIG |
3568 template | 3569 template |
3569 void | 3570 void |
3570 Warnings::issue_warning<64, true>(const Symbol* sym, | 3571 Warnings::issue_warning<64, true>(const Symbol* sym, |
3571 const Relocate_info<64, true>* relinfo, | 3572 const Relocate_info<64, true>* relinfo, |
3572 size_t relnum, off_t reloffset) const; | 3573 size_t relnum, off_t reloffset) const; |
3573 #endif | 3574 #endif |
3574 | 3575 |
3575 } // End namespace gold. | 3576 } // End namespace gold. |
OLD | NEW |