about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2011-06-01 15:45:31 -0400
committerRafael Ávila de Espíndola <respindola@mozilla.com>2011-06-01 15:45:31 -0400
commit30efdeeca1bd0d60412fdb9e88eba6336ffcacea (patch)
tree8e6e044d4515457c2cc5285f95afff7811507b97
parent2ef2bda276d2fe28d8b15f722850f5f21b226792 (diff)
downloadrust-30efdeeca1bd0d60412fdb9e88eba6336ffcacea.tar.gz
rust-30efdeeca1bd0d60412fdb9e88eba6336ffcacea.zip
Visibility is an ELF concept and protected visibility is not very well implemented,
avoid using it for now.

Instead, mark pairs that are not needed elsewhere as internal.
-rw-r--r--src/comp/middle/trans.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 3e3f8654be3..78850d20fa1 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -7436,9 +7436,12 @@ fn register_fn_pair(&@crate_ctxt cx, str ps, TypeRef llpairty, ValueRef llfn,
 
     llvm::LLVMSetInitializer(gvar, pair);
     llvm::LLVMSetGlobalConstant(gvar, True);
-    llvm::LLVMSetVisibility(gvar,
-                           lib::llvm::LLVMProtectedVisibility
-                           as llvm::Visibility);
+
+    // FIXME: We should also hide the unexported pairs in crates.
+    if (!cx.sess.get_opts().shared) {
+        llvm::LLVMSetLinkage(gvar, lib::llvm::LLVMInternalLinkage
+                             as llvm::Linkage);
+    }
 
     cx.item_ids.insert(id, llfn);
     cx.item_symbols.insert(id, ps);