Implement -Z relax-elf-relocations=yes|no
This lets rustc users tweak whether the linker should relax ELF relocations, namely whether it should emit R_X86_64_GOTPCRELX relocations instead of R_X86_64_GOTPCREL, as the former is allowed by the ABI to be further optimised. The default value is whatever the target defines.
This commit is contained in:
parent
3478d7c360
commit
6febaf2419
@ -156,7 +156,11 @@ pub fn target_machine_factory(
|
||||
let emit_stack_size_section = sess.opts.debugging_opts.emit_stack_sizes;
|
||||
|
||||
let asm_comments = sess.asm_comments();
|
||||
let relax_elf_relocations = sess.target.options.relax_elf_relocations;
|
||||
let relax_elf_relocations = sess
|
||||
.opts
|
||||
.debugging_opts
|
||||
.relax_elf_relocations
|
||||
.unwrap_or(sess.target.options.relax_elf_relocations);
|
||||
|
||||
let use_init_array = !sess
|
||||
.opts
|
||||
|
@ -573,6 +573,7 @@ fn test_debugging_options_tracking_hash() {
|
||||
tracked!(print_fuel, Some("abc".to_string()));
|
||||
tracked!(profile, true);
|
||||
tracked!(profile_emit, Some(PathBuf::from("abc")));
|
||||
tracked!(relax_elf_relocations, Some(true));
|
||||
tracked!(relro_level, Some(RelroLevel::Full));
|
||||
tracked!(report_delayed_bugs, true);
|
||||
tracked!(run_dsymutil, false);
|
||||
|
@ -1030,6 +1030,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
"enable queries of the dependency graph for regression testing (default: no)"),
|
||||
query_stats: bool = (false, parse_bool, [UNTRACKED],
|
||||
"print some statistics about the query system (default: no)"),
|
||||
relax_elf_relocations: Option<bool> = (None, parse_opt_bool, [TRACKED],
|
||||
"whether ELF relocations can be relaxed"),
|
||||
relro_level: Option<RelroLevel> = (None, parse_relro_level, [TRACKED],
|
||||
"choose which RELRO level to use"),
|
||||
report_delayed_bugs: bool = (false, parse_bool, [TRACKED],
|
||||
|
Loading…
Reference in New Issue
Block a user