From: "Schimpe, Christina" <christina.schimpe@intel.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
"Thiago Jung Bauermann" <thiago.bauermann@linaro.org>
Subject: RE: [PATCH 7/9] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements.
Date: Thu, 25 Sep 2025 11:10:14 +0000 [thread overview]
Message-ID: <SN7PR11MB76386C6D40709A65E39FB2C5F91FA@SN7PR11MB7638.namprd11.prod.outlook.com> (raw)
In-Reply-To: <86wm5pcrs0.fsf@gnu.org>
Hi Eli,
> -----Original Message-----
> From: Eli Zaretskii <eliz@gnu.org>
> Sent: Tuesday, September 23, 2025 1:50 PM
> To: Schimpe, Christina <christina.schimpe@intel.com>
> Cc: gdb-patches@sourceware.org
> Subject: Re: [PATCH 7/9] gdb: Provide gdbarch hook to distinguish shadow
> stack backtrace elements.
>
> > From: Christina Schimpe <christina.schimpe@intel.com>
> > Date: Tue, 23 Sep 2025 11:18:40 +0000
> >
> > On x86 with CET there can be elements on the shadow stack which are
> > not return addresses. In this case, we just want to print the element
> > itself in the shadow stack backtrace, but no further information.
> >
> > Provide a gdbarch hook to distinguish between return and non-return
> > addresses and use it to print the shadow stack backtrace as described
> > above.
> > ---
> > gdb/doc/gdb.texinfo | 19 ++++++++++++
> > gdb/gdbarch-gen.c | 32 ++++++++++++++++++++
> > gdb/gdbarch-gen.h | 15 +++++++++
> > gdb/gdbarch.h | 1 +
> > gdb/gdbarch_components.py | 17 +++++++++++
> > gdb/shadow-stack.c | 64 +++++++++++++++++----------------------
> > gdb/shadow-stack.h | 37 ++++++++++++++++++++++
> > 7 files changed, 148 insertions(+), 37 deletions(-)
>
> Thanks.
>
> > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index
> > ebda4546b58..a0fde385a8e 100644
> > --- a/gdb/doc/gdb.texinfo
> > +++ b/gdb/doc/gdb.texinfo
> > @@ -8887,6 +8887,25 @@ This is how a shadow stack backtrace looks like
> on amd64:
> > @end group
> > @end smallexample
> >
> > +There can be elements on the shadow stack which are not return
> > +addresses, for example on x86 with the Intel Control-Flow Enforcement
> > +Technology (@xref{CET}). In case of signals, the old shadow stack
> > +pointer is pushed
> ^
> A cross-reference is missing here.
Thanks will fix.
> > +in a special format with bit 63 set. For such shadow stack elements,
> > +the shadow stack frame just contains the level and the address on the
> > +shadow stack, as shown in the following example by frame 1:
> > +
> > +@smallexample
> > +@group
> > +(gdb) bt shadow 4
> > +#0 0x00007ffff7c54d90 in __restore_rt from /lib64/libc.so.6
> > +#1 0x80007ffff79fffd8
> > +#2 0x00007ffff7c54ce6 in __GI_raise at ../sysdeps/posix/raise.c:27
> > +#3 0x000000000040115d in main at /tmp/amd64-shadow-stack-
> signal.c:32
> > +(More shadow stack frames follow...)
> > +@end group
> > +@end smallexample
>
> Would it make sense to show something like "<signal caught>", instead of a
> frame with only an address?
Yeah, this is a good idea, I wondered about a similar thing actually but wanted to discuss
the general direction for handling those specific elements on the shadow stack first.
Maybe there are more options on other architectures that we have to consider.
Let's wait for more feedback on this, I added Thiago again in cc here.
Christina
> Reviewed-By: Eli Zaretskii <eliz@gnu.org>
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
next prev parent reply other threads:[~2025-09-25 11:10 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-23 11:18 [PATCH 0/9] Add new command to print the shadow stack backtrace Christina Schimpe
2025-09-23 11:18 ` [PATCH 1/9] gdb: Generalize handling of the shadow stack pointer Christina Schimpe
2025-10-31 1:31 ` Thiago Jung Bauermann
2025-11-17 11:18 ` Schimpe, Christina
2025-11-26 4:19 ` Thiago Jung Bauermann
2025-12-30 10:39 ` Schimpe, Christina
2025-09-23 11:18 ` [PATCH 2/9] gdb: Refactor 'stack.c:print_frame' Christina Schimpe
2025-10-03 20:05 ` Tom Tromey
2025-09-23 11:18 ` [PATCH 3/9] gdb: Introduce 'stack.c:print_pc' function without frame argument Christina Schimpe
2025-10-03 19:56 ` Tom Tromey
2025-09-23 11:18 ` [PATCH 4/9] gdb: Refactor 'find_symbol_funname' and 'info_frame_command_core' in stack.c Christina Schimpe
2025-10-03 19:55 ` Tom Tromey
2025-09-23 11:18 ` [PATCH 5/9] gdb: Refactor 'stack.c:print_frame_info' Christina Schimpe
2025-10-03 20:03 ` Tom Tromey
2025-09-23 11:18 ` [PATCH 6/9] gdb: Implement 'bt shadow' to print the shadow stack backtrace Christina Schimpe
2025-09-23 11:47 ` Eli Zaretskii
2025-09-25 11:06 ` Schimpe, Christina
2025-09-25 13:19 ` Eli Zaretskii
2025-09-25 14:58 ` Simon Marchi
2025-09-26 7:45 ` Schimpe, Christina
2025-10-29 15:05 ` Schimpe, Christina
2025-10-29 15:28 ` Guinevere Larsen
2025-11-03 19:47 ` Schimpe, Christina
2025-11-04 11:53 ` Guinevere Larsen
2025-11-05 16:33 ` Schimpe, Christina
2025-10-13 1:17 ` Thiago Jung Bauermann
2025-10-13 7:19 ` Schimpe, Christina
2025-10-31 4:39 ` Thiago Jung Bauermann
2025-11-06 14:23 ` Schimpe, Christina
2025-10-03 20:15 ` Tom Tromey
2025-10-12 19:45 ` Schimpe, Christina
2026-02-19 17:24 ` Tom Tromey
2026-03-02 12:24 ` Schimpe, Christina
2025-10-31 4:02 ` Thiago Jung Bauermann
2025-11-17 20:14 ` Schimpe, Christina
2025-11-26 4:07 ` Thiago Jung Bauermann
2025-11-26 16:29 ` Thiago Jung Bauermann
2026-01-22 17:04 ` Schimpe, Christina
2026-03-06 2:35 ` Thiago Jung Bauermann
2026-01-15 14:05 ` Schimpe, Christina
2025-09-23 11:18 ` [PATCH 7/9] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements Christina Schimpe
2025-09-23 11:49 ` Eli Zaretskii
2025-09-25 11:10 ` Schimpe, Christina [this message]
2025-11-02 21:20 ` Thiago Jung Bauermann
2025-11-12 17:28 ` Schimpe, Christina
2025-11-16 18:39 ` Thiago Jung Bauermann
2025-11-17 11:51 ` Schimpe, Christina
2025-09-23 11:18 ` [PATCH 8/9] gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64 linux Christina Schimpe
2025-11-26 4:22 ` Thiago Jung Bauermann
2025-09-23 11:18 ` [PATCH 9/9] gdb, mi: Add -shadow-stack-list-frames command Christina Schimpe
2025-09-23 11:53 ` Eli Zaretskii
2025-09-25 11:32 ` Schimpe, Christina
2025-10-03 20:17 ` Tom Tromey
2025-10-12 19:54 ` Schimpe, Christina
2025-10-13 0:06 ` Thiago Jung Bauermann
2025-11-26 4:26 ` Thiago Jung Bauermann
2026-01-22 17:01 ` Schimpe, Christina
2026-03-06 2:44 ` Thiago Jung Bauermann
2025-09-25 11:46 ` [PATCH 0/9] Add new command to print the shadow stack backtrace Schimpe, Christina
2025-10-08 1:46 ` Thiago Jung Bauermann
2025-10-13 1:18 ` Thiago Jung Bauermann
2025-10-13 6:34 ` Schimpe, Christina
2025-10-29 14:52 ` Schimpe, Christina
2025-10-31 0:47 ` Thiago Jung Bauermann
2025-12-30 10:16 ` Schimpe, Christina
2026-03-06 2:30 ` Thiago Jung Bauermann
2026-03-12 9:53 ` 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=SN7PR11MB76386C6D40709A65E39FB2C5F91FA@SN7PR11MB7638.namprd11.prod.outlook.com \
--to=christina.schimpe@intel.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=thiago.bauermann@linaro.org \
/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