summaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-09-29 17:04:36 +0000
committerCary Coutant <ccoutant@google.com>2011-09-29 17:04:36 +0000
commita7dac15368485853f4bd463352afb9b49517b624 (patch)
treefc084d79c73bad8d161d8907b033b703553b3186 /gold
parent68fb0ec00bfd65b1085a011086d0328a904ab3df (diff)
* gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
Check for NULL. * gold/symtab.cc (Symbol_table::add_from_relobj): Ignore version symbols during incremental update. (Symbol_table::add_from_dynobj): Likewise.
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog8
-rw-r--r--gold/incremental.cc2
-rw-r--r--gold/symtab.cc13
3 files changed, 22 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 9b56527d8d..a00a8e4d1f 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,11 @@
+2011-09-29 Cary Coutant <ccoutant@google.com>
+
+ * gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
+ Check for NULL.
+ * gold/symtab.cc (Symbol_table::add_from_relobj): Ignore version
+ symbols during incremental update.
+ (Symbol_table::add_from_dynobj): Likewise.
+
2011-09-27 Viktor Kutuzov <vkutuzov@accesssoftek.com>
Ian Lance Taylor <iant@google.com>
diff --git a/gold/incremental.cc b/gold/incremental.cc
index b422827e5a..cbf6fbaae2 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -685,7 +685,7 @@ Sized_incremental_binary<size, big_endian>::do_process_got_plt(
gold_assert(plt_desc >= first_global && plt_desc < symtab_count);
Symbol* sym = this->global_symbol(plt_desc - first_global);
// Add the PLT entry only if the symbol is still referenced.
- if (sym->in_reg())
+ if (sym != NULL && sym->in_reg())
{
gold_debug(DEBUG_INCREMENTAL,
"PLT entry %d: %s",
diff --git a/gold/symtab.cc b/gold/symtab.cc
index ff1b5caa36..a90fee4af0 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -1143,6 +1143,14 @@ Symbol_table::add_from_relobj(
bool is_default_version = false;
bool is_forced_local = false;
+ // FIXME: For incremental links, we don't store version information,
+ // so we need to ignore version symbols for now.
+ if (parameters->incremental_update() && ver != NULL)
+ {
+ namelen = ver - name;
+ ver = NULL;
+ }
+
if (ver != NULL)
{
// The symbol name is of the form foo@VERSION or foo@@VERSION
@@ -1346,6 +1354,11 @@ Symbol_table::add_from_dynobj(
return;
}
+ // FIXME: For incremental links, we don't store version information,
+ // so we need to ignore version symbols for now.
+ if (parameters->incremental_update())
+ versym = NULL;
+
if (versym != NULL && versym_size / 2 < count)
{
dynobj->error(_("too few symbol versions"));