1
Fork 0

auto merge of #8736 : luqmana/rust/hf, r=yichoi

Fixes #8536.
This commit is contained in:
bors 2013-08-24 22:46:13 -07:00
commit bed84898fc
6 changed files with 20 additions and 39 deletions

View file

@ -13,7 +13,7 @@ use driver::session::sess_os_to_meta_os;
use driver::session; use driver::session;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
pub fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_triple: ~str, target_os: session::os) -> target_strs::t {
return target_strs::t { return target_strs::t {
module_asm: ~"", module_asm: ~"",
@ -61,13 +61,7 @@ pub fn get_target_strs(target_os: session::os) -> target_strs::t {
} }
}, },
target_triple: match target_os { target_triple: target_triple,
session::os_macos => ~"arm-apple-darwin",
session::os_win32 => ~"arm-pc-mingw32",
session::os_linux => ~"arm-unknown-linux-gnueabihf",
session::os_android => ~"arm-linux-androideabi",
session::os_freebsd => ~"arm-unknown-freebsd"
},
cc_args: ~[~"-marm"] cc_args: ~[~"-marm"]
}; };

View file

@ -13,7 +13,7 @@ use driver::session;
use driver::session::sess_os_to_meta_os; use driver::session::sess_os_to_meta_os;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
pub fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_triple: ~str, target_os: session::os) -> target_strs::t {
return target_strs::t { return target_strs::t {
module_asm: ~"", module_asm: ~"",
@ -61,13 +61,7 @@ pub fn get_target_strs(target_os: session::os) -> target_strs::t {
} }
}, },
target_triple: match target_os { target_triple: target_triple,
session::os_macos => ~"mips-apple-darwin",
session::os_win32 => ~"mips-pc-mingw32",
session::os_linux => ~"mips-unknown-linux-gnu",
session::os_android => ~"mips-unknown-android-gnu",
session::os_freebsd => ~"mips-unknown-freebsd"
},
cc_args: ~[] cc_args: ~[]
}; };

View file

@ -14,7 +14,7 @@ use driver::session::sess_os_to_meta_os;
use driver::session; use driver::session;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
pub fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_triple: ~str, target_os: session::os) -> target_strs::t {
return target_strs::t { return target_strs::t {
module_asm: ~"", module_asm: ~"",
@ -44,13 +44,7 @@ pub fn get_target_strs(target_os: session::os) -> target_strs::t {
} }
}, },
target_triple: match target_os { target_triple: target_triple,
session::os_macos => ~"i686-apple-darwin",
session::os_win32 => ~"i686-pc-mingw32",
session::os_linux => ~"i686-unknown-linux-gnu",
session::os_android => ~"i686-unknown-android-gnu",
session::os_freebsd => ~"i686-unknown-freebsd"
},
cc_args: ~[~"-m32"] cc_args: ~[~"-m32"]
}; };

View file

@ -14,7 +14,7 @@ use driver::session::sess_os_to_meta_os;
use driver::session; use driver::session;
use metadata::loader::meta_section_name; use metadata::loader::meta_section_name;
pub fn get_target_strs(target_os: session::os) -> target_strs::t { pub fn get_target_strs(target_triple: ~str, target_os: session::os) -> target_strs::t {
return target_strs::t { return target_strs::t {
module_asm: ~"", module_asm: ~"",
@ -52,13 +52,7 @@ pub fn get_target_strs(target_os: session::os) -> target_strs::t {
} }
}, },
target_triple: match target_os { target_triple: target_triple,
session::os_macos => ~"x86_64-apple-darwin",
session::os_win32 => ~"x86_64-pc-mingw32",
session::os_linux => ~"x86_64-unknown-linux-gnu",
session::os_android => ~"x86_64-unknown-android-gnu",
session::os_freebsd => ~"x86_64-unknown-freebsd",
},
cc_args: ~[~"-m64"] cc_args: ~[~"-m64"]
}; };

View file

@ -570,11 +570,12 @@ pub fn build_target_config(sopts: @session::options,
abi::Arm => (ast::ty_i32, ast::ty_u32, ast::ty_f64), abi::Arm => (ast::ty_i32, ast::ty_u32, ast::ty_f64),
abi::Mips => (ast::ty_i32, ast::ty_u32, ast::ty_f64) abi::Mips => (ast::ty_i32, ast::ty_u32, ast::ty_f64)
}; };
let target_triple = sopts.target_triple.clone();
let target_strs = match arch { let target_strs = match arch {
abi::X86 => x86::get_target_strs(os), abi::X86 => x86::get_target_strs(target_triple, os),
abi::X86_64 => x86_64::get_target_strs(os), abi::X86_64 => x86_64::get_target_strs(target_triple, os),
abi::Arm => arm::get_target_strs(os), abi::Arm => arm::get_target_strs(target_triple, os),
abi::Mips => mips::get_target_strs(os) abi::Mips => mips::get_target_strs(target_triple, os)
}; };
let target_cfg = @session::config { let target_cfg = @session::config {
os: os, os: os,

View file

@ -391,19 +391,23 @@ LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
cl::ParseCommandLineOptions(argc, argv); cl::ParseCommandLineOptions(argc, argv);
} }
Triple Trip(Triple::normalize(triple));
TargetOptions Options; TargetOptions Options;
Options.EnableSegmentedStacks = EnableSegmentedStacks; Options.EnableSegmentedStacks = EnableSegmentedStacks;
Options.FixedStackSegmentSize = 2 * 1024 * 1024; // XXX: This is too big. Options.FixedStackSegmentSize = 2 * 1024 * 1024; // XXX: This is too big.
Options.FloatABIType =
(Trip.getEnvironment() == Triple::GNUEABIHF) ? FloatABI::Hard :
FloatABI::Default;
PassManager *PM = unwrap<PassManager>(PMR); PassManager *PM = unwrap<PassManager>(PMR);
std::string Err; std::string Err;
std::string Trip(Triple::normalize(triple));
std::string FeaturesStr(feature); std::string FeaturesStr(feature);
std::string CPUStr(cpu); std::string CPUStr(cpu);
const Target *TheTarget = TargetRegistry::lookupTarget(Trip, Err); const Target *TheTarget = TargetRegistry::lookupTarget(Trip.getTriple(), Err);
TargetMachine *Target = TargetMachine *Target =
TheTarget->createTargetMachine(Trip, CPUStr, FeaturesStr, TheTarget->createTargetMachine(Trip.getTriple(), CPUStr, FeaturesStr,
Options, Reloc::PIC_, Options, Reloc::PIC_,
CodeModel::Default, OptLevel); CodeModel::Default, OptLevel);
Target->addAnalysisPasses(*PM); Target->addAnalysisPasses(*PM);