diff options
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/middle/metadata.rs | 11 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 2 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/comp/middle/metadata.rs b/src/comp/middle/metadata.rs index 0cfe09b7..806f38b5 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 aea6b8e9..64d1df7b 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); } |