Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Schimpe, Christina" <christina.schimpe@intel.com>
To: "tom@tromey.com" <tom@tromey.com>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: "thiago.bauermann@linaro.org" <thiago.bauermann@linaro.org>,
	"luis.machado@arm.com" <luis.machado@arm.com>,
	Andrew Burgess <aburgess@redhat.com>
Subject: RE: [PATCH v5 00/12] Add CET shadow stack support
Date: Wed, 20 Aug 2025 09:16:22 +0000	[thread overview]
Message-ID: <SN7PR11MB7638A40B75CDD135CFF815BDF933A@SN7PR11MB7638.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20250628082810.332526-1-christina.schimpe@intel.com>

Hi Tom, 

I retested my CET shadow stack series and noticed a new fail in gdb.dap/scopes.exp, if  I rebase the series on latest upstream master.
Reason seems to be the patch that you added recently: 'Do not allow DAP clients to dereference "void *"' and it's handling of unavailable registers.

The shadow stack feature is disabled by default, so the pl3_ssp register which is added with my CET shadow stack series will be shown as unavailable and we see a TCL error:
~~~
>>> {"seq": 12, "type": "request", "command": "variables", "arguments": {"variablesReference": 2, "count": 85}}
Content-Length: 129^M
^M
{"request_seq": 12, "type": "response", "command": "variables", "success": false, "message": "value is not available", "seq": 25}FAIL: gdb.dap/scopes.exp: fetch all registers success
ERROR: tcl error sourcing /tmp/gdb/testsuite/gdb.dap/scopes.exp.
ERROR: tcl error code TCL LOOKUP DICT body
ERROR: key "body" not known in dictionary
    while executing
"dict get $val body variables"
    (file "/tmp/gdb/testsuite/gdb.dap/scopes.exp" line 152)
    invoked from within
"source /tmp/gdb/testsuite/gdb.dap/scopes.exp"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 source /tmp/gdb/testsuite/gdb.dap/scopes.exp"
    invoked from within
"catch "uplevel #0 source $test_file_name" msg"
UNRESOLVED: gdb.dap/scopes.exp: testcase '/tmp/gdb/testsuite/gdb.dap/scopes.exp' aborted due to Tcl error
~~~

I could make this test pass by enabling the shadow stack feature in that specific test, if the HW supports CET shadow stack. 
The enablement would be done similar to my CET shadow stack tests:

~~~
save_vars { ::env(GLIBC_TUNABLES) } {

    append_environment GLIBC_TUNABLES "glibc.cpu.hwcaps" "SHSTK"
~~~

An alternative would be that the test is able to handle unavailable registers, which I think is better actually.
But I don't have a proper fix available yet.

What do you think ? 

Thanks,
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


  parent reply	other threads:[~2025-08-20  9:17 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-28  8:27 Christina Schimpe
2025-06-28  8:27 ` [PATCH v5 01/12] gdb, testsuite: Extend core_find procedure to save program output Christina Schimpe
2025-07-14 12:21   ` Andrew Burgess
2025-07-17 13:37     ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 02/12] gdbserver: Add optional runtime register set type Christina Schimpe
2025-06-28  8:28 ` [PATCH v5 03/12] gdbserver: Add assert in x86_linux_read_description Christina Schimpe
2025-06-28  8:28 ` [PATCH v5 04/12] gdb: Sync up x86-gcc-cpuid.h with cpuid.h from gcc 14 branch Christina Schimpe
2025-06-28  8:28 ` [PATCH v5 05/12] gdb, gdbserver: Use xstate_bv for target description creation on x86 Christina Schimpe
2025-07-14 13:52   ` Andrew Burgess
2025-07-15 10:28     ` Schimpe, Christina
2025-07-23 12:47       ` Schimpe, Christina
2025-08-05 13:47         ` Andrew Burgess
2025-06-28  8:28 ` [PATCH v5 06/12] gdb, gdbserver: Add support of Intel shadow stack pointer register Christina Schimpe
2025-07-25 12:49   ` Andrew Burgess
2025-07-25 15:03     ` Schimpe, Christina
2025-08-01 12:54       ` Schimpe, Christina
2025-08-05 13:57       ` Andrew Burgess
2025-08-06 19:53         ` Schimpe, Christina
2025-08-06 19:54           ` Schimpe, Christina
2025-08-07  3:17             ` Thiago Jung Bauermann
2025-08-14 11:39           ` Andrew Burgess
2025-07-29 13:51   ` Andrew Burgess
2025-08-01 12:40     ` Schimpe, Christina
2025-08-10 19:01   ` H.J. Lu
2025-08-10 20:07     ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 07/12] gdb: amd64 linux coredump support with shadow stack Christina Schimpe
2025-07-29 14:46   ` Andrew Burgess
2025-07-30  1:55     ` Thiago Jung Bauermann
2025-07-30 11:42       ` Schimpe, Christina
2025-08-04 15:28         ` Schimpe, Christina
2025-08-05  4:29           ` Thiago Jung Bauermann
2025-08-05 15:29             ` Schimpe, Christina
2025-08-06 20:52             ` Luis
2025-08-11 11:52               ` Schimpe, Christina
2025-08-04 12:45     ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 08/12] gdb: Handle shadow stack pointer register unwinding for amd64 linux Christina Schimpe
2025-07-30  9:58   ` Andrew Burgess
2025-07-30 12:06     ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 09/12] gdb, gdbarch: Enable inferior calls for shadow stack support Christina Schimpe
2025-07-30 10:42   ` Andrew Burgess
2025-06-28  8:28 ` [PATCH v5 10/12] gdb: Implement amd64 linux shadow stack support for inferior calls Christina Schimpe
2025-07-30 11:58   ` Andrew Burgess
2025-07-31 12:32     ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 11/12] gdb, gdbarch: Introduce gdbarch method to get the shadow stack pointer Christina Schimpe
2025-07-30 12:22   ` Andrew Burgess
2025-08-04 13:01     ` Schimpe, Christina
2025-08-14 15:50       ` Andrew Burgess
2025-08-19 15:37         ` Schimpe, Christina
2025-06-28  8:28 ` [PATCH v5 12/12] gdb: Enable displaced stepping with shadow stack on amd64 linux Christina Schimpe
2025-07-30 13:59   ` Andrew Burgess
2025-07-31 17:29     ` Schimpe, Christina
2025-07-08 15:18 ` [PATCH v5 00/12] Add CET shadow stack support Schimpe, Christina
2025-08-14  7:52   ` Schimpe, Christina
2025-07-11 10:36 ` Luis Machado
2025-07-11 13:54   ` Schimpe, Christina
2025-07-11 15:54     ` Luis Machado
2025-07-13 14:01       ` Schimpe, Christina
2025-07-13 19:05         ` Luis Machado
2025-07-13 19:57           ` Schimpe, Christina
2025-07-14  7:13           ` Luis Machado
2025-07-17 12:01             ` Schimpe, Christina
2025-07-17 14:59               ` Luis Machado
2025-07-23 12:45                 ` Schimpe, Christina
2025-07-28 17:05                   ` Luis Machado
2025-07-28 17:20                     ` Schimpe, Christina
2025-08-20  9:16 ` Schimpe, Christina [this message]
2025-08-20 15:21   ` Schimpe, Christina

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SN7PR11MB7638A40B75CDD135CFF815BDF933A@SN7PR11MB7638.namprd11.prod.outlook.com \
    --to=christina.schimpe@intel.com \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=luis.machado@arm.com \
    --cc=thiago.bauermann@linaro.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox