Skip to content

Commit 6286558

Browse files
committed
---
yaml --- r: 6575 b: refs/heads/master c: 47ea57f h: refs/heads/master i: 6573: 9e6f5fe 6571: 096c3b8 6567: 48f5fda 6559: 8d67489 v: v3
1 parent 438ff96 commit 6286558

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 52d7dc5e0a218f1495da2057ac064811853a4c9c
2+
refs/heads/master: 47ea57feadb6d05241fad064434c28c48e31b7fc

trunk/src/comp/middle/trans.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6059,7 +6059,18 @@ fn trans_crate(sess: session::session, crate: @ast::crate, tcx: ty::ctxt,
60596059
-> ModuleRef {
60606060
let sha = std::sha1::mk_sha1();
60616061
let link_meta = link::build_link_meta(sess, *crate, output, sha);
6062-
let llmod = str::as_buf(link_meta.name, {|buf|
6062+
6063+
// Append ".rc" to crate name as LLVM module identifier.
6064+
//
6065+
// LLVM code generator emits a ".file filename" directive
6066+
// for ELF backends. Value of the "filename" is set as the
6067+
// LLVM module identifier. Due to a LLVM MC bug[1], LLVM
6068+
// crashes if the module identifer is same as other symbols
6069+
// such as a function name in the module.
6070+
// 1. http://llvm.org/bugs/show_bug.cgi?id=11479
6071+
let llmod_id = link_meta.name + ".rc";
6072+
6073+
let llmod = str::as_buf(llmod_id, {|buf|
60636074
llvm::LLVMModuleCreateWithNameInContext
60646075
(buf, llvm::LLVMGetGlobalContext())
60656076
});

trunk/src/test/run-pass/issue-1251.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#[link(name = "unsupervise")];
2+
3+
native mod rustrt {
4+
fn unsupervise();
5+
}
6+
7+
fn main() { }

0 commit comments

Comments
 (0)