RE: [PATCH v5 00/12] Add CET shadow stack support

Schimpe, Christina
2025-08-14T07:53:43Z

Hi Andrew,

Thanks a lot for your detailed review of the full series!
I implemented most of your feedback.

I think the most important open is for the description of the gdbarch method, since ARM's GCS series also depends on that patch ("gdb, gdbarch: Introduce gdbarch method to get the shadow stack pointer.")

Discussion for this patch: https://sourceware.org/pipermail/gdb-patches/2025-August/219698.html

So I am kindly pinging for your feedback here. 😊

Best Regards,
Christina

> -----Original Message-----
> From: Schimpe, Christina <christina.schimpe@intel.com>
> Sent: Tuesday, July 8, 2025 5:18 PM
> To: Schimpe, Christina <christina.schimpe@intel.com>; gdb-
> patches@sourceware.org
> Cc: thiago.bauermann@linaro.org; luis.machado@arm.com; Tom Tromey
> <tom@tromey.com>
> Subject: RE: [PATCH v5 00/12] Add CET shadow stack support
>
> I actually missed to mention Tom's feedback - my apologies for that.
>
> Tom's review included:
> - Approval for patch #4 " gdb: Sync up x86-gcc-cpuid.h with cpuid.h from gcc
> 14 branch."
> - Improvements for comments in patch #11 "gdb, gdbarch: Introduce
> gdbarch method to get the shadow stack pointer. ".
>
> Kind Regards,
> Christina
>
> > -----Original Message-----
> > From: Christina Schimpe <christina.schimpe@intel.com>
> > Sent: Saturday, June 28, 2025 10:28 AM
> > To: gdb-patches@sourceware.org
> > Cc: thiago.bauermann@linaro.org; luis.machado@arm.com
> > Subject: [PATCH v5 00/12] Add CET shadow stack support
> >
> > Hi all,
> >
> > this is my v5 of the series to add amd64 shadow stack support to GDB
> > on linux.
> > It addresses the feedback of Luis.
> >
> > v4 can be found here:
> > https://sourceware.org/pipermail/gdb-patches/2025-June/218744.html
> >
> > Changes since v4:
> > - Improve some comments.
> > - Change the test in "gdb: amd64 linux coredump support with shadow
> > stack." to also test core file generated by the linux kernel. This
> > requires changes for the core_find procedure to save program output,
> > that have been implemented by Thiago already, so we include this part
> > of the patch in this series: "gdb, testsuite: Extend core_find procedure
> > to save program output.". The test is now very similar to the test
> > implemented for Guarded Control Stack corefiles. Thanks to Thiago for
> > providing the input here!
> >
> > I am looking forward to your feedback!
> >
> > Regards,
> >
> > Christina
> >
> > Christina Schimpe (12):
> > gdb, testsuite: Extend core_find procedure to save program output.
> > gdbserver: Add optional runtime register set type.
> > gdbserver: Add assert in x86_linux_read_description.
> > gdb: Sync up x86-gcc-cpuid.h with cpuid.h from gcc 14 branch.
> > gdb, gdbserver: Use xstate_bv for target description creation on x86.
> > gdb, gdbserver: Add support of Intel shadow stack pointer register.
> > gdb: amd64 linux coredump support with shadow stack.
> > gdb: Handle shadow stack pointer register unwinding for amd64 linux.
> > gdb, gdbarch: Enable inferior calls for shadow stack support.
> > gdb: Implement amd64 linux shadow stack support for inferior calls.
> > gdb, gdbarch: Introduce gdbarch method to get the shadow stack
> > pointer.
> > gdb: Enable displaced stepping with shadow stack on amd64 linux.
> >
> > gdb/NEWS | 6 +
> > gdb/amd64-linux-nat.c | 17 ++
> > gdb/amd64-linux-tdep.c | 218 +++++++++++++++++-
> > gdb/amd64-tdep.c | 35 ++-
> > gdb/amd64-tdep.h | 9 +-
> > gdb/arch-utils.c | 10 +
> > gdb/arch-utils.h | 5 +
> > gdb/arch/amd64-linux-tdesc.c | 33 +--
> > gdb/arch/amd64-linux-tdesc.h | 7 +-
> > gdb/arch/amd64.c | 25 +-
> > gdb/arch/amd64.h | 10 +-
> > gdb/arch/i386-linux-tdesc.c | 29 +--
> > gdb/arch/i386-linux-tdesc.h | 5 +-
> > gdb/arch/i386.c | 19 +-
> > gdb/arch/i386.h | 8 +-
> > gdb/arch/x86-linux-tdesc-features.c | 60 ++---
> > gdb/arch/x86-linux-tdesc-features.h | 25 +-
> > gdb/doc/gdb.texinfo | 42 ++++
> > gdb/features/Makefile | 2 +
> > gdb/features/i386/32bit-ssp.c | 14 ++
> > gdb/features/i386/32bit-ssp.xml | 11 +
> > gdb/features/i386/64bit-ssp.c | 14 ++
> > gdb/features/i386/64bit-ssp.xml | 11 +
> > gdb/gdbarch-gen.c | 54 +++++
> > gdb/gdbarch-gen.h | 24 ++
> > gdb/gdbarch_components.py | 31 +++
> > gdb/i386-tdep.c | 51 +++-
> > gdb/i386-tdep.h | 11 +-
> > gdb/infcall.c | 14 +-
> > gdb/linux-tdep.c | 47 ++++
> > gdb/linux-tdep.h | 7 +
> > gdb/nat/x86-gcc-cpuid.h | 153 +++++++++---
> > gdb/nat/x86-linux-tdesc.c | 20 +-
> > gdb/nat/x86-linux-tdesc.h | 7 +-
> > gdb/nat/x86-linux.c | 57 +++++
> > gdb/nat/x86-linux.h | 4 +
> > .../gdb.arch/amd64-shadow-stack-cmds.exp | 141 +++++++++++
> > .../gdb.arch/amd64-shadow-stack-corefile.c | 42 ++++
> > .../gdb.arch/amd64-shadow-stack-corefile.exp | 110 +++++++++
> > .../gdb.arch/amd64-shadow-stack-disp-step.exp | 92 ++++++++
> > gdb/testsuite/gdb.arch/amd64-shadow-stack.c | 35 +++
> > gdb/testsuite/gdb.arch/amd64-ssp.exp | 50 ++++
> > .../gdb.base/inline-frame-cycle-unwind.py | 4 +
> > gdb/testsuite/lib/gdb.exp | 80 ++++++-
> > gdb/x86-linux-nat.c | 50 +++-
> > gdb/x86-linux-nat.h | 11 +
> > gdb/x86-tdep.c | 21 ++
> > gdb/x86-tdep.h | 9 +
> > gdbserver/i387-fp.cc | 40 ++--
> > gdbserver/linux-amd64-ipa.cc | 10 +-
> > gdbserver/linux-i386-ipa.cc | 6 +-
> > gdbserver/linux-low.cc | 50 ++--
> > gdbserver/linux-low.h | 7 +-
> > gdbserver/linux-x86-low.cc | 44 +++-
> > gdbsupport/x86-xstate.h | 7 +-
> > 55 files changed, 1687 insertions(+), 217 deletions(-) create mode
> > 100644 gdb/features/i386/32bit-ssp.c create mode 100644
> > gdb/features/i386/32bit- ssp.xml create mode 100644
> > gdb/features/i386/64bit-ssp.c create mode
> > 100644 gdb/features/i386/64bit-ssp.xml create mode 100644
> > gdb/testsuite/gdb.arch/amd64-shadow-stack-cmds.exp
> > create mode 100644
> > gdb/testsuite/gdb.arch/amd64-shadow-stack-corefile.c
> > create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-
> > corefile.exp
> > create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-
> > step.exp
> > create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack.c
> > create mode 100644 gdb/testsuite/gdb.arch/amd64-ssp.exp
> >
> > --
> > 2.43.0

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928