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

Schimpe, Christina
2025-07-08T15:19:43Z

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