Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH v5 00/13] Add new command to print the shadow stack backtrace
@ 2026-09-24  8:32 Christina Joos
  2026-09-24  8:32 ` [PATCH v5 01/13] gdb: Generalize handling of the shadow stack pointer Christina Joos
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Christina Joos @ 2026-09-24  8:32 UTC (permalink / raw)
  To: gdb-patches; +Cc: thiago.bauermann, tom, luis.machado.foss

Hi all,

this is v5 of the series
"Add new command to print the shadow stack backtrace".

This version addresses the feedback from Luis and Thiago.
Some parts of this series are already approved, but for some patches
I still need approval from the global maintainers before I can merge this.

Changes since v4:
- Change the configuration of the gdbarch function
top_addr_empty_shadow_stack on aarch64 as requested by Thiago
- Change the author of patch #2 to its actual author
- Change my last name to my new last name (Schimpe->Joos)
- Change assert to error message in patch
"gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64 linux."
- Fix some error messages, so they can be translated properly.
- Improve some comments and nits

This is an example of the output of 'bt -shadow' on amd64 linux:
~~~
(gdb) bt -shadow
#0  0x000055555555514a in call1 at amd64-shadow-stack.c:27
#1  0x000055555555515f in main at amd64-shadow-stack.c:38
~~~

The normal backtrace includes one additional frame, since the shadow
stack backtrace relies on return addresses of the shadow stack only.
But except the missing frame arguments and frame #0 of the normal
backtrace, the traces are the same.
~~~
(gdb) bt
#0  call2 () at amd64-shadow-stack.c:21
#1  0x000055555555514a in call1 () at amd64-shadow-stack.c:27
#2  0x000055555555515f in main () at amd64-shadow-stack.c:38
~~~

In previous cover letters I kept a number of opens.  The remaining ones
I am now changing to potential improvements, since I believe this can be
changed/added after this series is merged, too.

Potential improvements:
1) Thiago suggested changing the frame numbering so that it always starts
at #1, since for the shadow stack we don't have frame #0 printed by the
normal backtrace.
2) Or, consider printing frame #0 similarly to what the normal backtrace does
3) Consider printing frame arguments 
4) Show the selected frame. This is only relevant once the normal backtrace
command supports this.  Current patch in the mailing lists:
https://sourceware.org/pipermail/gdb-patches/2026-July/228417.html.

I am looking forward to your feedback!

Christina

v4: https://sourceware.org/pipermail/gdb-patches/2026-July/228504.html
v3: https://sourceware.org/pipermail/gdb-patches/2026-July/228440.html
v2: https://sourceware.org/pipermail/gdb-patches/2026-January/224388.html
v1: https://sourceware.org/pipermail/gdb-patches/2025-September/221141.html 

Christina Joos (12):
  gdb: Generalize handling of the shadow stack pointer.
  gdb: Add get_main_func_start_pc to refactor frame.c:inside_main_func.
  gdb: Refactor 'stack.c:print_frame'.
  gdb: Introduce 'stack.c:print_pc' function without frame argument.
  gdb: Refactor 'find_symbol_funname' and 'info_frame_command_core' in
    stack.c.
  gdb: Refactor 'stack.c:print_frame_info'.
  gdb: Add command option 'bt -shadow' to print the shadow stack
    backtrace.
  gdb: Provide gdbarch hook to distinguish shadow stack backtrace
    elements.
  gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64
    linux.
  gdb: Enable inferior calls in the shadow stack backtrace.
  gdb: Enable signal trampolines in the shadow stack backtrace.
  gdb, mi: Add -shadow-stack-list-frames command

Thiago Jung Bauermann (1):
  aarch64: Implement gdbarch function top_addr_empty_shadow_stack.

 gdb/Makefile.in                               |   2 +
 gdb/NEWS                                      |  11 +
 gdb/aarch64-linux-tdep.c                      |  51 +-
 gdb/aarch64-tdep.c                            |  71 +-
 gdb/amd64-linux-tdep.c                        | 213 ++---
 gdb/amd64-tdep.c                              |  22 +
 gdb/doc/gdb.texinfo                           |  95 +++
 gdb/frame.c                                   |  37 +-
 gdb/frame.h                                   |   6 +
 gdb/gdbarch-gen.c                             | 190 ++++-
 gdb/gdbarch-gen.h                             |  95 ++-
 gdb/gdbarch.h                                 |   1 +
 gdb/gdbarch_components.py                     | 124 ++-
 gdb/infcall.c                                 |   4 +-
 gdb/linux-tdep.c                              |   9 +-
 gdb/mi/mi-cmd-stack.c                         |  95 +++
 gdb/mi/mi-cmds.c                              |   2 +
 gdb/mi/mi-cmds.h                              |   1 +
 gdb/shadow-stack.c                            | 775 ++++++++++++++++++
 gdb/shadow-stack.h                            | 185 +++++
 gdb/stack.c                                   | 316 ++++---
 gdb/stack.h                                   |  43 +
 .../amd64-shadow-stack-backtrace-signal.exp   |  49 ++
 .../gdb.arch/amd64-shadow-stack-cmds.exp      |  71 ++
 .../gdb.arch/amd64-shadow-stack-signal.c      |  31 +
 gdb/testsuite/gdb.base/options.exp            |   2 +-
 .../gdb.mi/mi-shadow-stack-signal.exp         |  69 ++
 gdb/testsuite/gdb.mi/mi-shadow-stack.exp      |  93 +++
 28 files changed, 2254 insertions(+), 409 deletions(-)
 create mode 100644 gdb/shadow-stack.c
 create mode 100644 gdb/shadow-stack.h
 create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-backtrace-signal.exp
 create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-signal.c
 create mode 100644 gdb/testsuite/gdb.mi/mi-shadow-stack-signal.exp
 create mode 100644 gdb/testsuite/gdb.mi/mi-shadow-stack.exp

-- 
2.53.0

________________________________________
Intel Deutschland GmbH 

Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany 

Tel: +49 (89) 99143-0 

www.intel.de 

Managing Directors: Candice Moore, Jeffrey Schneiderman, Ramachandran Sitaraman

Chairperson of the Supervisory Board: Sonja Pierer

Registered Seat: Munich Commercial Register B: Amtsgericht Munich HRB 186928

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-09-24 21:04 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-24  8:32 [PATCH v5 00/13] Add new command to print the shadow stack backtrace Christina Joos
2026-09-24  8:32 ` [PATCH v5 01/13] gdb: Generalize handling of the shadow stack pointer Christina Joos
2026-09-24 21:03   ` Thiago Jung Bauermann
2026-09-24  8:32 ` [PATCH v5 02/13] aarch64: Implement gdbarch function top_addr_empty_shadow_stack Christina Joos
2026-09-24 21:04   ` Thiago Jung Bauermann
2026-09-24  8:33 ` [PATCH v5 03/13] gdb: Add get_main_func_start_pc to refactor frame.c:inside_main_func Christina Joos
2026-09-24  8:33 ` [PATCH v5 04/13] gdb: Refactor 'stack.c:print_frame' Christina Joos
2026-09-24  8:33 ` [PATCH v5 05/13] gdb: Introduce 'stack.c:print_pc' function without frame argument Christina Joos
2026-09-24  8:33 ` [PATCH v5 06/13] gdb: Refactor 'find_symbol_funname' and 'info_frame_command_core' in stack.c Christina Joos
2026-09-24  8:33 ` [PATCH v5 07/13] gdb: Refactor 'stack.c:print_frame_info' Christina Joos
2026-09-24  8:33 ` [PATCH v5 08/13] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace Christina Joos
2026-09-24  9:37   ` Eli Zaretskii
2026-09-24  8:33 ` [PATCH v5 09/13] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements Christina Joos
2026-09-24  9:29   ` Eli Zaretskii
2026-09-24 13:10     ` Joos, Christina
2026-09-24  8:33 ` [PATCH v5 10/13] gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64 linux Christina Joos
2026-09-24  8:33 ` [PATCH v5 11/13] gdb: Enable inferior calls in the shadow stack backtrace Christina Joos
2026-09-24  8:33 ` [PATCH v5 12/13] gdb: Enable signal trampolines " Christina Joos
2026-09-24  8:33 ` [PATCH v5 13/13] gdb, mi: Add -shadow-stack-list-frames command Christina Joos
2026-09-24  9:39   ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox