* gold/incremental.cc (Sized_incremental_binary::do_process_got_plt):
authorCary Coutant <ccoutant@google.com>
Thu, 29 Sep 2011 17:04:36 +0000 (17:04 +0000)
committerCary Coutant <ccoutant@google.com>
Thu, 29 Sep 2011 17:04:36 +0000 (17:04 +0000)
Check for NULL.
* gold/symtab.cc (Symbol_table::add_from_relobj): Ignore version
symbols during incremental update.
(Symbol_table::add_from_dynobj): Likewise.

gold/ChangeLog
gold/incremental.cc
gold/symtab.cc

index 9b56527d8d8254aa55b0afb49492b8e140edd1cd..a00a8e4d1fdd61653bd3736366209b01bd2cfee8 100644 (file)
@@ -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>
 
index b422827e5a7392bc8108086155a56dcd8835d016..cbf6fbaae285dcb174decbf7f22a05f88ece040f 100644 (file)
@@ -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",
index ff1b5caa36f036c7123afd5c5f8afde7d57d7309..a90fee4af04addd809a7ca6124a2d9eea1ad7447 100644 (file)
@@ -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"));