Page MenuHomeFreeBSD

D55149.id171381.diff
No OneTemporary

D55149.id171381.diff

diff --git a/sys/amd64/include/pcb.h b/sys/amd64/include/pcb.h
--- 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 and offset
+ * must be unmodified. When adding extra fields that are discovered 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/frame.h b/sys/arm/include/frame.h
--- a/sys/arm/include/frame.h
+++ b/sys/arm/include/frame.h
@@ -56,8 +56,12 @@
/*
* Trap frame. Pushed onto the kernel stack on a trap (synchronous exception).
+ *
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
*/
-
struct trapframe {
register_t tf_spsr;
register_t tf_r0;
diff --git a/sys/arm/include/pcb.h b/sys/arm/include/pcb.h
--- a/sys/arm/include/pcb.h
+++ b/sys/arm/include/pcb.h
@@ -42,6 +42,10 @@
#include <machine/vfp.h>
/*
+ * struct pcb is known to and used by kernel debuggers. Its layout and offset
+ * must be unmodified. When adding extra fields that are discovered 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/frame.h b/sys/arm64/include/frame.h
--- a/sys/arm64/include/frame.h
+++ b/sys/arm64/include/frame.h
@@ -42,6 +42,11 @@
/*
* NOTE: keep this structure in sync with struct reg and struct mcontext.
+ *
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
*/
struct trapframe {
uint64_t tf_sp;
diff --git a/sys/arm64/include/pcb.h b/sys/arm64/include/pcb.h
--- a/sys/arm64/include/pcb.h
+++ b/sys/arm64/include/pcb.h
@@ -46,6 +46,11 @@
#define PCB_FP 10
#define PCB_LR 11
+/*
+ * struct pcb is known to and used by kernel debuggers. Its layout and offset
+ * must be unmodified. When adding extra fields that are discovered 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
--- a/sys/i386/include/pcb.h
+++ b/sys/i386/include/pcb.h
@@ -44,16 +44,17 @@
#include <machine/npx.h>
/*
- * 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 and offset
+ * must be unmodified. When adding extra fields that are discovered 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/frame.h b/sys/powerpc/include/frame.h
--- a/sys/powerpc/include/frame.h
+++ b/sys/powerpc/include/frame.h
@@ -48,6 +48,13 @@
*
* Change ordering to cluster together these register_t's. XXX
*/
+
+/*
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
+ */
struct trapframe {
register_t fixreg[32];
register_t lr;
diff --git a/sys/powerpc/include/pcb.h b/sys/powerpc/include/pcb.h
--- a/sys/powerpc/include/pcb.h
+++ b/sys/powerpc/include/pcb.h
@@ -41,6 +41,11 @@
#include <machine/setjmp.h>
#ifndef _STANDALONE
+/*
+ * struct pcb is known to and used by kernel debuggers. Its layout and offset
+ * must be unmodified. When adding extra fields that are discovered 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/frame.h b/sys/riscv/include/frame.h
--- a/sys/riscv/include/frame.h
+++ b/sys/riscv/include/frame.h
@@ -42,6 +42,11 @@
/*
* NOTE: keep this structure in sync with struct reg and struct mcontext.
+ *
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
*/
struct trapframe {
uint64_t tf_ra;
diff --git a/sys/riscv/include/pcb.h b/sys/riscv/include/pcb.h
--- 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 and offset
+ * must be unmodified. When adding extra fields that are discovered 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 */
diff --git a/sys/x86/include/frame.h b/sys/x86/include/frame.h
--- a/sys/x86/include/frame.h
+++ b/sys/x86/include/frame.h
@@ -43,8 +43,12 @@
#ifdef __i386__
/*
* Exception/Trap Stack Frame
+ *
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
*/
-
struct trapframe {
int tf_fs;
int tf_es;
@@ -114,8 +118,12 @@
*
* The ordering of this is specifically so that we can take first 6
* the syscall arguments directly from the beginning of the frame.
+ *
+ * struct trapframe is known to and used by kernel debuggers. Its layout and
+ * offset must be unmodified. When adding extra fields that are discovered by
+ * kernel debuggers, debuggers should be backward compatible by using
+ * osreldate.
*/
-
struct trapframe {
register_t tf_rdi;
register_t tf_rsi;

File Metadata

Mime Type
text/plain
Expires
Tue, May 26, 7:03 PM (16 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33535693
Default Alt Text
D55149.id171381.diff (6 KB)

Event Timeline