PR gold/12952
authorIan Lance Taylor <ian@airs.com>
Wed, 6 Jul 2011 04:43:39 +0000 (04:43 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 6 Jul 2011 04:43:39 +0000 (04:43 +0000)
* resolve.cc (Symbol::override_base_with_special): Simply override
version with special symbol version, ignoring previous version.

gold/ChangeLog
gold/resolve.cc

index 819f2509198d8758c060c59d2c16247b4f3aa82e..ec1f3eac57f551dddf318c2a147c4a2472ec97d7 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-05  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/12952
+       * resolve.cc (Symbol::override_base_with_special): Simply override
+       version with special symbol version, ignoring previous version.
+
 2011-07-05  Ian Lance Taylor  <iant@google.com>
 
        * object.cc (Sized_relobj_file::include_section_group): Add
index 8850a3d46aa14bd215798380a41be387c71c344e..720b350b327da25a672d162fd98bca55af7e1177 100644 (file)
@@ -911,7 +911,15 @@ Symbol::override_base_with_special(const Symbol* from)
     }
 
   if (same_name)
-    this->override_version(from->version_);
+    {
+      // When overriding a versioned symbol with a special symbol, we
+      // may be changing the version.  This will happen if we see a
+      // special symbol such as "_end" defined in a shared object with
+      // one version (from a version script), but we want to define it
+      // here with a different version (from a different version
+      // script).
+      this->version_ = from->version_;
+    }
   this->type_ = from->type_;
   this->binding_ = from->binding_;
   this->override_visibility(from->visibility_);