git: a9a3c5818285 - stable/15 - amd64 FRED: handle INT 3, INT 4, and INT 0x92 same as for IDT

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Tue, 03 Nov 2026 09:02:24 UTC
The branch stable/15 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=a9a3c581828535a06ee7b821d7936e9c844f379d

commit a9a3c581828535a06ee7b821d7936e9c844f379d
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-10-29 02:16:42 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-11-03 09:01:19 +0000

    amd64 FRED: handle INT 3, INT 4, and INT 0x92 same as for IDT
    
    (cherry picked from commit 32b9c967e07c7af2b6e421969d0e7ba1cc9b9425)
---
 sys/amd64/amd64/trap.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index 6de47c23c79a..afcd13604caf 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -1672,6 +1672,22 @@ trap_fred_u(struct trapframe_fred *frame)
 			frame->tf_idt.tf_err = fred_inst_len(frame);
 			ia32_syscall(&frame->tf_idt);
 			break;
+		} else
+#endif
+		if (vec == IDT_BP || vec == IDT_OF) {
+			trap_fred_ev_to_trapno(frame, vec);
+			trap_fred_update_thread(td, frame);
+			trap_fred_handle_u_exc(td, frame, vec, &ksi,
+			    &do_trapsig);
+			break;
+		}
+#ifdef KDTRACE_HOOKS
+		else if (vec == IDT_DTRACE_RET) {
+			frame->tf_idt.tf_trapno = T_DTRACE_RET;
+			trap_fred_update_thread(td, frame);
+			(void)trap_user_dtrace(&frame->tf_idt,
+			    &dtrace_return_probe_ptr);
+			return;
 		}
 #endif
 		trap_fred_u_noperm(frame, &ksi);