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>
