Skip to content

Commit fb214c6

Browse files
authored
Make debugtrap generate brk #0xf000 on aarch64 so debuggers recognize it (#10813)
Debuggers treat `brk #0xf000` as a software breakpoint, so that they know to skip over it when attempting to resume. Fixes: #9726
1 parent 61eb16d commit fb214c6

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

cranelift/codegen/src/isa/aarch64/inst.isle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2966,7 +2966,7 @@
29662966
(rule (csdb)
29672967
(SideEffectNoResult.Inst (MInst.Csdb)))
29682968

2969-
;; Helper for generating `brk` instructions.
2969+
;; Helper for generating `brk` instructions, hinted as being debug traps.
29702970
(decl brk () SideEffectNoResult)
29712971
(rule (brk)
29722972
(SideEffectNoResult.Inst (MInst.Brk)))

cranelift/codegen/src/isa/aarch64/inst/emit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3119,7 +3119,7 @@ impl MachInstEmit for Inst {
31193119
sink.put4(0xd503201f);
31203120
}
31213121
&Inst::Brk => {
3122-
sink.put4(0xd4200000);
3122+
sink.put4(0xd43e0000);
31233123
}
31243124
&Inst::Udf { trap_code } => {
31253125
sink.add_trap(trap_code);

cranelift/codegen/src/isa/aarch64/inst/emit_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6082,7 +6082,7 @@ fn test_aarch64_binemit() {
60826082
"br x3",
60836083
));
60846084

6085-
insns.push((Inst::Brk, "000020D4", "brk #0"));
6085+
insns.push((Inst::Brk, "00003ED4", "brk #0xf000"));
60866086

60876087
insns.push((
60886088
Inst::Adr {

cranelift/codegen/src/isa/aarch64/inst/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2680,7 +2680,7 @@ impl Inst {
26802680
let rn = pretty_print_reg(rn);
26812681
format!("br {rn}")
26822682
}
2683-
&Inst::Brk => "brk #0".to_string(),
2683+
&Inst::Brk => "brk #0xf000".to_string(),
26842684
&Inst::Udf { .. } => "udf #0xc11f".to_string(),
26852685
&Inst::TrapIf {
26862686
ref kind,

0 commit comments

Comments
 (0)