Skip to content

Commit 0d8d08d

Browse files
authored
Rollup merge of rust-lang#61675 - fintelia:riscv-frame-pointer, r=nagisa
Include frame pointer for bare metal RISC-V targets This changes the default setting to enable the use of the frame pointer register when targeting RISC-V. On that architecture there is a dedicated frame pointer register which LLVM would otherwise never use so there is no increase in register pressure. Further, since these are bare metal targets, getting backtraces without the frame pointer is considerably more difficult (you can't just ask the OS to load the ELF executable and parse DWARF symbols). It is true that this setting can also be changed with the `-C force-frame-pointers` flag but that won't impact the compilation of the standard library, meaning that backtraces from, say, a panic handler would be useless.
2 parents 96b5830 + 493d1b4 commit 0d8d08d

4 files changed

+4
-0
lines changed

src/librustc_target/spec/riscv32imac_unknown_none_elf.rs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub fn target() -> TargetResult {
2525
relocation_model: "static".to_string(),
2626
emit_debug_gdb_scripts: false,
2727
abi_blacklist: super::riscv_base::abi_blacklist(),
28+
eliminate_frame_pointer: false,
2829
.. Default::default()
2930
},
3031
})

src/librustc_target/spec/riscv32imc_unknown_none_elf.rs

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ pub fn target() -> TargetResult {
2626
relocation_model: "static".to_string(),
2727
emit_debug_gdb_scripts: false,
2828
abi_blacklist: super::riscv_base::abi_blacklist(),
29+
eliminate_frame_pointer: false,
2930
.. Default::default()
3031
},
3132
})

src/librustc_target/spec/riscv64gc_unknown_none_elf.rs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub fn target() -> TargetResult {
2525
relocation_model: "static".to_string(),
2626
emit_debug_gdb_scripts: false,
2727
abi_blacklist: super::riscv_base::abi_blacklist(),
28+
eliminate_frame_pointer: false,
2829
.. Default::default()
2930
},
3031
})

src/librustc_target/spec/riscv64imac_unknown_none_elf.rs

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub fn target() -> TargetResult {
2525
relocation_model: "static".to_string(),
2626
emit_debug_gdb_scripts: false,
2727
abi_blacklist: super::riscv_base::abi_blacklist(),
28+
eliminate_frame_pointer: false,
2829
.. Default::default()
2930
},
3031
})

0 commit comments

Comments
 (0)