PR 10916
authorIan Lance Taylor <ian@airs.com>
Thu, 31 Dec 2009 01:14:34 +0000 (01:14 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 31 Dec 2009 01:14:34 +0000 (01:14 +0000)
* symtab.cc (Symbol_table::add_from_relobj): When not exporting
symbols from this object, don't change the visibility of an
undefined symbol.
* testsuite/exclude_libs_test_1.c (lib1_ref): New function.

gold/ChangeLog
gold/symtab.cc
gold/testsuite/exclude_libs_test_1.c

index 05aac4b1b652e8e7235360588f90bd857aba8e8a..f32f46fd923ddbc668238abe2738b8d6b3a2b92a 100644 (file)
@@ -1,3 +1,11 @@
+2009-12-30  Ian Lance Taylor  <iant@google.com>
+
+       PR 10916
+       * symtab.cc (Symbol_table::add_from_relobj): When not exporting
+       symbols from this object, don't change the visibility of an
+       undefined symbol.
+       * testsuite/exclude_libs_test_1.c (lib1_ref): New function.
+
 2009-12-30  Ian Lance Taylor  <iant@google.com>
 
        PR 10861
index d8461a742dc3d8f736392d156fd7f8f7ee420ba6..79fc4e6c4874959a85364f3dd37ae37f10893827 100644 (file)
@@ -1151,7 +1151,8 @@ Symbol_table::add_from_relobj(
        }
 
       // Fix up visibility if object has no-export set.
-      if (relobj->no_export())
+      if (relobj->no_export()
+         && (orig_st_shndx != elfcpp::SHN_UNDEF || !is_ordinary))
         {
          // We may have copied symbol already above.
          if (psym != &sym2)
index ced1aade14c3ec5f89d156b1bf26a0028cbeaa75..48b617b0a02c736fccb2d70de7feddbad164d013 100644 (file)
@@ -2,6 +2,8 @@ void lib1_default (void);
 void lib1_hidden (void);
 void lib1_internal (void);
 void lib1_protected (void);
+void lib1_ref (void);
+extern void lib2_default (void);
 
 void __attribute__((visibility ("default")))
 lib1_default (void)
@@ -22,3 +24,9 @@ void __attribute__((visibility ("protected")))
 lib1_protected (void)
 {
 }
+
+void
+lib1_ref (void)
+{
+  lib2_default ();
+}