git: 24038d696e50 - main - Revert "pcb.h: mark struct pcb to be preserved"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 09 Feb 2026 18:56:49 UTC
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 */