From nobody Mon Feb 9 04:18:47 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f8WfJ2Yf4z6SDP0 for ; Mon, 09 Feb 2026 04:18:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f8WfH6zR3z3vGM for ; Mon, 09 Feb 2026 04:18:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770610728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1mAnnrCg21qmErCaDoj+k/L5ESrcbzH5iolLVBhPxHs=; b=RvlZzh9X5KJKv00Q8NIi23aQm9U1+yGWf60rBHLO0hBQmEszNalNVmWEQJFRoS2fu2uMA7 8mA5I3qiU3uaB4OPbKCCfaiwGC8svzE9A5cIwXo2ngVJ5YpSjH/mFUma3HgS+mV98i4Brg TI17Ob2FC/oWj/2c4UgTRFHIT4q0ns72bPbq2SuktTmRNlu5/+EIOxp0UVR0IJuBhPsjqj dM3JFvXG4nbc9GIrzBOqNn5Yte4K2LQiTtvX9S8lEikW5Yd9jPqBbnnbeJSXjNVym92l6s TNL5rt57QiSRkepEWL3BgQynTppFvfCYbIW5yIPmwfhIJJcPDZeosCJRIf8skA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770610728; a=rsa-sha256; cv=none; b=sPHuXL0xmkPQP23Ixkvz9Y9mOFAfOVKFPh41Vg/Znn2r4tLFz2iYCSE4WslgfqL0JZqeWq jl/b/2W6LE5kErVXOFbO97kRsaxeOsjZU0puW8/tYQrjZ9PHm61o4Y94s6PI3SpWPEsUCE Qb7yK07uErtZWiMTxBM9VIg5W59tKDLLdKfM27r1yHRldh3+ubrEb7KgEGLqEVQQ71QnH6 vc66QvtBUcSjdUVNL9nnBq4t4MeBvLy56NIfo8nlgERrsXU4gHlanX8lV2wXRJgjnAX8X3 3Ijy8b+OuCr0ujhslYzrxoadFirwh2ngPkumCPWije8ftJ5GZVYl8pt4tbBZAg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770610728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1mAnnrCg21qmErCaDoj+k/L5ESrcbzH5iolLVBhPxHs=; b=AqOW4at13bu9BMbWUy1ma6EVP2WvhftKe3Cx4vE2DspOMMp5GvPgTIiO1Ek7bat6rsPTpi lPWwfITzVlCCtnJuGVlS0NbZQef+XHYmKm6jCofMpgX69P0ifNei+FQcH8N3ytXMD3ljms UVeOjpmBICjRBw5SFl4KXV/x+bgJ05Dq15ZkLr5/R5yVwy9Hhwe5M7AoJr+/oJcjppSlse yn15FT3UFlk1YSmwquptoHCGyEpCLdhSVwNEUQDaXoF1Cj8wUoufCNsYFSp7knpHtb2KqN G8Auq6fmyG7mPBM9NA7jYd8nKOT/SsxxgN69h7D8AxIQsLisZ0QQZCIRSAU3iw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f8WfH5Qxmz2h6 for ; Mon, 09 Feb 2026 04:18:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 2112e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 09 Feb 2026 04:18:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Minsoo Choo From: Konstantin Belousov Subject: git: 8f23665fed2f - main - pcb.h: mark struct pcb to be preserved List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8f23665fed2fbaf4481359b4d2fcdd7b9feb40e3 Auto-Submitted: auto-generated Date: Mon, 09 Feb 2026 04:18:47 +0000 Message-Id: <69896027.2112e.2852c0dd@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8f23665fed2fbaf4481359b4d2fcdd7b9feb40e3 commit 8f23665fed2fbaf4481359b4d2fcdd7b9feb40e3 Author: Minsoo Choo AuthorDate: 2026-02-06 20:03:53 +0000 Commit: Konstantin Belousov CommitDate: 2026-02-09 04:17:16 +0000 pcb.h: mark struct pcb to be preserved There are programs that depend on this structure (e.g. kernel debuggers) that breaks when the ABI changes. Signed-off-by: Minsoo Choo Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D55149 --- 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, 39 insertions(+), 18 deletions(-) diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h index 27e1dce08ee1..5a1e8529ad8b 100644 --- a/sys/amd64/include/pcb.h +++ b/sys/amd64/include/pcb.h @@ -44,18 +44,19 @@ #ifdef __amd64__ /* - * NB: The fields marked with (*) are used by kernel debuggers. Their - * ABI should be preserved. + * 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_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 fd77544c22c1..810b1e665b19 100644 --- a/sys/arm/include/pcb.h +++ b/sys/arm/include/pcb.h @@ -42,6 +42,10 @@ #include /* + * 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 c0feb1149cf5..9955f5b22714 100644 --- a/sys/arm64/include/pcb.h +++ b/sys/arm64/include/pcb.h @@ -46,6 +46,11 @@ 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 1b14efa425b5..1385bfeeef31 100644 --- a/sys/i386/include/pcb.h +++ b/sys/i386/include/pcb.h @@ -44,16 +44,17 @@ #include /* - * NB: The fields marked with (*) are used by kernel debuggers. Their - * ABI should be preserved. + * 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 { - 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 0230cf78aba7..7ebd13dd0ed1 100644 --- a/sys/powerpc/include/pcb.h +++ b/sys/powerpc/include/pcb.h @@ -41,6 +41,11 @@ #include #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 bb88516a1385..bcec4c3fd478 100644 --- a/sys/riscv/include/pcb.h +++ b/sys/riscv/include/pcb.h @@ -39,6 +39,11 @@ 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 */