about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/metadata.rs11
-rw-r--r--src/comp/middle/trans.rs2
2 files changed, 8 insertions, 5 deletions
diff --git a/src/comp/middle/metadata.rs b/src/comp/middle/metadata.rs
index 0cfe09b76ab..806f38b5252 100644
--- a/src/comp/middle/metadata.rs
+++ b/src/comp/middle/metadata.rs
@@ -235,9 +235,9 @@ mod Encode {
 }
 
 
-// Returns a Plain Old LLVM String, *without* the trailing zero byte.
+// Returns a Plain Old LLVM String.
 fn C_postr(str s) -> ValueRef {
-    ret llvm.LLVMConstString(_str.buf(s), _str.byte_len(s) - 1u, False);
+    ret llvm.LLVMConstString(_str.buf(s), _str.byte_len(s), False);
 }
 
 
@@ -674,8 +674,11 @@ fn encode_metadata(@trans.crate_ctxt cx, @ast.crate crate)
     ret C_postr(string_w.get_str());
 }
 
-fn write_metadata(@trans.crate_ctxt cx, @ast.crate crate) {
-    auto llmeta = encode_metadata(cx, crate);
+fn write_metadata(@trans.crate_ctxt cx, bool shared, @ast.crate crate) {
+    auto llmeta = C_postr("");
+    if (shared) {
+        llmeta = encode_metadata(cx, crate);
+    }
 
     auto llconst = trans.C_struct(vec(llmeta));
     auto llglobal = llvm.LLVMAddGlobal(cx.llmod, trans.val_ty(llconst),
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index aea6b8e9433..64d1df7b1a8 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -7747,7 +7747,7 @@ fn trans_crate(session.session sess, @ast.crate crate, ty.ctxt tcx,
     }
 
     // Translate the metadata.
-    middle.metadata.write_metadata(cx.ccx, crate);
+    middle.metadata.write_metadata(cx.ccx, shared, crate);
 
     run_passes(llmod, optimize, verify, save_temps, output, ot);
 }