Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 09 Feb 2026 18:56:49 +0000
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 24038d696e50 - main - Revert "pcb.h: mark struct pcb to be preserved"
Message-ID:  <698a2df1.34947.3356d220@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by kib:

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

commit 24038d696e5030f622e87d6651e9dab1cd7fcb2a
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-09 18:25:17 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-09 18:55:57 +0000

    Revert "pcb.h: mark struct pcb to be preserved"
    
    kgdb only uses the marked fields from dumppcb for initial frame
    reconstruction.
    
    This reverts commit 8f23665fed2fbaf4481359b4d2fcdd7b9feb40e3.
---
 sys/amd64/include/pcb.h   | 21 ++++++++++-----------
 sys/arm/include/pcb.h     |  4 ----
 sys/arm64/include/pcb.h   |  5 -----
 sys/i386/include/pcb.h    | 17 ++++++++---------
 sys/powerpc/include/pcb.h |  5 -----
 sys/riscv/include/pcb.h   |  5 -----
 6 files changed, 18 insertions(+), 39 deletions(-)

diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
index 5a1e8529ad8b..27e1dce08ee1 100644
--- a/sys/amd64/include/pcb.h
+++ b/sys/amd64/include/pcb.h
@@ -44,19 +44,18 @@
 
 #ifdef __amd64__
 /*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
+ * NB: The fields marked with (*) are used by kernel debuggers.  Their
+ * ABI should be preserved.
  */
 struct pcb {
-	register_t	pcb_r15;
-	register_t	pcb_r14;
-	register_t	pcb_r13;
-	register_t	pcb_r12;
-	register_t	pcb_rbp;
-	register_t	pcb_rsp;
-	register_t	pcb_rbx;
-	register_t	pcb_rip;
+	register_t	pcb_r15;	/* (*) */
+	register_t	pcb_r14;	/* (*) */
+	register_t	pcb_r13;	/* (*) */
+	register_t	pcb_r12;	/* (*) */
+	register_t	pcb_rbp;	/* (*) */
+	register_t	pcb_rsp;	/* (*) */
+	register_t	pcb_rbx;	/* (*) */
+	register_t	pcb_rip;	/* (*) */
 	register_t	pcb_fsbase;
 	register_t	pcb_gsbase;
 	register_t	pcb_kgsbase;
diff --git a/sys/arm/include/pcb.h b/sys/arm/include/pcb.h
index 810b1e665b19..fd77544c22c1 100644
--- a/sys/arm/include/pcb.h
+++ b/sys/arm/include/pcb.h
@@ -42,10 +42,6 @@
 #include <machine/vfp.h>
 
 /*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
- *
  * WARNING!
  * Keep pcb_regs first for faster access in switch.S
  */
diff --git a/sys/arm64/include/pcb.h b/sys/arm64/include/pcb.h
index 9955f5b22714..c0feb1149cf5 100644
--- a/sys/arm64/include/pcb.h
+++ b/sys/arm64/include/pcb.h
@@ -46,11 +46,6 @@ struct trapframe;
 #define	PCB_FP		10
 #define	PCB_LR		11
 
-/*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
- */
 struct pcb {
 	uint64_t	pcb_x[12];
 	/* These two need to be in order as we access them together */
diff --git a/sys/i386/include/pcb.h b/sys/i386/include/pcb.h
index 1385bfeeef31..1b14efa425b5 100644
--- a/sys/i386/include/pcb.h
+++ b/sys/i386/include/pcb.h
@@ -44,17 +44,16 @@
 #include <machine/npx.h>
 
 /*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
+ * NB: The fields marked with (*) are used by kernel debuggers.  Their
+ * ABI should be preserved.
  */
 struct pcb {
-	int	pcb_edi;
-	int	pcb_esi;
-	int	pcb_ebp;
-	int	pcb_esp;
-	int	pcb_ebx;
-	int	pcb_eip;
+	int	pcb_edi;	/* (*) */
+	int	pcb_esi;	/* (*) */
+	int	pcb_ebp;	/* (*) */
+	int	pcb_esp;	/* (*) */
+	int	pcb_ebx;	/* (*) */
+	int	pcb_eip;	/* (*) */
 	struct segment_descriptor pcb_fsd;
 	struct segment_descriptor pcb_gsd;
 	int	pcb_ds;
diff --git a/sys/powerpc/include/pcb.h b/sys/powerpc/include/pcb.h
index 7ebd13dd0ed1..0230cf78aba7 100644
--- a/sys/powerpc/include/pcb.h
+++ b/sys/powerpc/include/pcb.h
@@ -41,11 +41,6 @@
 #include <machine/setjmp.h>
 
 #ifndef _STANDALONE
-/*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
- */
 struct pcb {
 	register_t	pcb_context[20];	/* non-volatile r12-r31 */
 	register_t	pcb_cr;			/* Condition register */
diff --git a/sys/riscv/include/pcb.h b/sys/riscv/include/pcb.h
index bcec4c3fd478..bb88516a1385 100644
--- a/sys/riscv/include/pcb.h
+++ b/sys/riscv/include/pcb.h
@@ -39,11 +39,6 @@
 
 struct trapframe;
 
-/*
- * struct pcb is known to and used by kernel debuggers. Its layout must be kept
- * stable. When adding extra fields that are accessed by kernel debuggers,
- * debuggers should be backward compatible by using osreldate.
- */
 struct pcb {
 	uint64_t	pcb_ra;		/* Return address */
 	uint64_t	pcb_sp;		/* Stack pointer */


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?698a2df1.34947.3356d220>