add -Z emit-stack-sizes

This commit is contained in:
Jorge Aparicio 2018-09-13 19:43:15 +02:00
parent c3a1a0d340
commit 3c0907ce51
4 changed files with 10 additions and 2 deletions

View File

@ -1385,6 +1385,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
"run the self profiler"),
profile_json: bool = (false, parse_bool, [UNTRACKED],
"output a json file with profiler results"),
emit_stack_sizes: bool = (false, parse_bool, [UNTRACKED],
"emits a section containing stack size metadata"),
}
pub fn default_lib_output() -> CrateType {

View File

@ -196,6 +196,7 @@ pub fn target_machine_factory(sess: &Session, find_features: bool)
let features = CString::new(features).unwrap();
let is_pie_binary = !find_features && is_pie_binary(sess);
let trap_unreachable = sess.target.target.options.trap_unreachable;
let emit_stack_size_section = sess.opts.debugging_opts.emit_stack_sizes;
let asm_comments = sess.asm_comments();
@ -213,6 +214,7 @@ pub fn target_machine_factory(sess: &Session, find_features: bool)
trap_unreachable,
singlethread,
asm_comments,
emit_stack_size_section,
)
};

View File

@ -1460,7 +1460,8 @@ extern "C" {
DataSections: bool,
TrapUnreachable: bool,
Singlethread: bool,
AsmComments: bool)
AsmComments: bool,
EmitStackSizeSection: bool)
-> Option<&'static mut TargetMachine>;
pub fn LLVMRustDisposeTargetMachine(T: &'static mut TargetMachine);
pub fn LLVMRustAddAnalysisPasses(T: &'a TargetMachine, PM: &PassManager<'a>, M: &'a Module);

View File

@ -373,7 +373,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
bool DataSections,
bool TrapUnreachable,
bool Singlethread,
bool AsmComments) {
bool AsmComments,
bool EmitStackSizeSection) {
auto OptLevel = fromRust(RustOptLevel);
auto RM = fromRust(RustReloc);
@ -411,6 +412,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
}
#if LLVM_VERSION_GE(6, 0)
Options.EmitStackSizeSection = EmitStackSizeSection;
Optional<CodeModel::Model> CM;
#else
CodeModel::Model CM = CodeModel::Model::Default;