aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-04-29 19:20:10 +0000
committerGraydon Hoare <[email protected]>2011-04-29 19:20:20 +0000
commit7b95b5c033435e0b8902c3f3afb14c80e04fee83 (patch)
treeb42d338d615d96c2c30e991555730ad39b9c793f /src/comp
parentImplement destructors in rustc (diff)
downloadrust-7b95b5c033435e0b8902c3f3afb14c80e04fee83.tar.xz
rust-7b95b5c033435e0b8902c3f3afb14c80e04fee83.zip
Don't emit metadata unless compiling -shared.
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 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);
}