From ec77144713a67ae8aa616cecd054786cf9e5aa44 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Mon, 31 Oct 2011 10:28:18 -0700 Subject: [PATCH] add -m64 to gcc args if appropriate --- src/comp/back/link.rs | 4 +++- src/comp/back/target_strs.rs | 3 ++- src/comp/back/x86.rs | 4 +++- src/comp/back/x86_64.rs | 4 +++- src/comp/middle/trans.rs | 6 ++++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/comp/back/link.rs b/src/comp/back/link.rs index d7b79e939be..8d46774712a 100644 --- a/src/comp/back/link.rs +++ b/src/comp/back/link.rs @@ -516,7 +516,9 @@ fn link_binary(sess: session::session, let prog: str = "gcc"; // The invocations of gcc share some flags across platforms - let gcc_args = [stage, "-m32", "-o", out_filename, obj_filename]; + let gcc_args = + [stage] + sess.get_targ_cfg().target_strs.gcc_args + + ["-o", out_filename, obj_filename]; let lib_cmd; let os = sess.get_targ_cfg().os; diff --git a/src/comp/back/target_strs.rs b/src/comp/back/target_strs.rs index bf2458c2d6b..c3f70d83dfc 100644 --- a/src/comp/back/target_strs.rs +++ b/src/comp/back/target_strs.rs @@ -4,5 +4,6 @@ type t = { module_asm: str, meta_sect_name: str, data_layout: str, - target_triple: str + target_triple: str, + gcc_args: [str] }; \ No newline at end of file diff --git a/src/comp/back/x86.rs b/src/comp/back/x86.rs index 50f71419853..0aff0604389 100644 --- a/src/comp/back/x86.rs +++ b/src/comp/back/x86.rs @@ -33,7 +33,9 @@ fn get_target_strs(target_os: session::os) -> target_strs::t { session::os_macos. { "i686-apple-darwin" } session::os_win32. { "i686-pc-mingw32" } session::os_linux. { "i686-unknown-linux-gnu" } - } + }, + + gcc_args: ["-m32"] }; } diff --git a/src/comp/back/x86_64.rs b/src/comp/back/x86_64.rs index 8cbebebf1ff..a668e3ee2f0 100644 --- a/src/comp/back/x86_64.rs +++ b/src/comp/back/x86_64.rs @@ -33,7 +33,9 @@ fn get_target_strs(target_os: session::os) -> target_strs::t { session::os_macos. { "x86_64-apple-darwin" } session::os_win32. { "x86_64-pc-mingw32" } session::os_linux. { "x86_64-unknown-linux-gnu" } - } + }, + + gcc_args: ["-m64"] }; } diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 397e07af34c..d60fcc88c3e 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -6063,11 +6063,13 @@ fn trans_crate(sess: session::session, crate: @ast::crate, tcx: ty::ctxt, llvm::LLVMModuleCreateWithNameInContext (buf, llvm::LLVMGetGlobalContext()) }); + let data_layout = sess.get_targ_cfg().target_strs.data_layout; + let targ_triple = sess.get_targ_cfg().target_strs.target_triple; let _: () = - str::as_buf(sess.get_targ_cfg().target_strs.data_layout, + str::as_buf(data_layout, {|buf| llvm::LLVMSetDataLayout(llmod, buf) }); let _: () = - str::as_buf(sess.get_targ_cfg().target_strs.target_triple, + str::as_buf(targ_triple, {|buf| llvm::LLVMSetTarget(llmod, buf) }); let targ_cfg = sess.get_targ_cfg(); let td = mk_target_data(sess.get_targ_cfg().target_strs.data_layout);