* gold/incremental.cc

(Output_section_incremental_inputs::write_info_blocks): Check for
	hidden and internal symbols.
This commit is contained in:
Cary Coutant 2011-07-06 22:26:37 +00:00
parent e3d961fe96
commit f48b5fb76b
2 changed files with 15 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2011-07-06 Cary Coutant <ccoutant@google.com>
* gold/incremental.cc
(Output_section_incremental_inputs::write_info_blocks): Check for
hidden and internal symbols.
2011-07-06 Cary Coutant <ccoutant@google.com>
* incremental.cc (Sized_incremental_binary::do_file_has_changed):

View File

@ -1669,9 +1669,15 @@ Output_section_incremental_inputs<size, big_endian>::write_info_blocks(
if (sym->symtab_index() == -1U)
continue;
unsigned int flags = 0;
if (sym->source() == Symbol::FROM_OBJECT
&& sym->object() == obj
&& sym->is_defined())
// If the symbol has hidden or internal visibility, we
// mark it as defined in the shared object so we don't
// try to resolve it during an incremental update.
if (sym->visibility() == elfcpp::STV_HIDDEN
|| sym->visibility() == elfcpp::STV_INTERNAL)
flags = INCREMENTAL_SHLIB_SYM_DEF;
else if (sym->source() == Symbol::FROM_OBJECT
&& sym->object() == obj
&& sym->is_defined())
flags = INCREMENTAL_SHLIB_SYM_DEF;
else if (sym->is_copied_from_dynobj()
&& this->symtab_->get_copy_source(sym) == dynobj)