diff options
author | Cary Coutant <ccoutant@google.com> | 2011-07-06 22:26:37 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2011-07-06 22:26:37 +0000 |
commit | f48b5fb76bf64c945d178839a41b835ee67dd12d (patch) | |
tree | adf52c712dcb8116452ac03c587a4f65c9bf5628 | |
parent | e3d961fe96743c7f02bf714ec159f77b2be47864 (diff) | |
download | gdb-f48b5fb76bf64c945d178839a41b835ee67dd12d.zip gdb-f48b5fb76bf64c945d178839a41b835ee67dd12d.tar.gz gdb-f48b5fb76bf64c945d178839a41b835ee67dd12d.tar.bz2 |
* gold/incremental.cc
(Output_section_incremental_inputs::write_info_blocks): Check for
hidden and internal symbols.
-rw-r--r-- | gold/ChangeLog | 6 | ||||
-rw-r--r-- | gold/incremental.cc | 12 |
2 files changed, 15 insertions, 3 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 192d6f6..52833b6 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,11 @@ 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): Check disposition for startup file. (Incremental_inputs::report_command_line): Ignore diff --git a/gold/incremental.cc b/gold/incremental.cc index 710effc..cb97044 100644 --- a/gold/incremental.cc +++ b/gold/incremental.cc @@ -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) |