RE: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace.

Schimpe, Christina
2026-04-14T08:44:35Z

> -----Original Message-----
> From: Schimpe, Christina
> Sent: Freitag, 13. Februar 2026 17:42
> To: 'Eli Zaretskii' <eliz@gnu.org>
> Cc: gdb-patches@sourceware.org; thiago.bauermann@linaro.org
> Subject: RE: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print
> the shadow stack backtrace.
>
> > -----Original Message-----
> > From: Eli Zaretskii <eliz@gnu.org>
> > Sent: Freitag, 23. Januar 2026 09:52
> > To: Schimpe, Christina <christina.schimpe@intel.com>
> > Cc: gdb-patches@sourceware.org; thiago.bauermann@linaro.org
> > Subject: Re: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to
> > print the shadow stack backtrace.
> >
> > > From: Christina Schimpe <christina.schimpe@intel.com>
> > > Cc: thiago.bauermann@linaro.org
> > > Date: Fri, 23 Jan 2026 08:05:28 +0000
> > >
> > > gdb/NEWS | 3 +
> > > gdb/amd64-linux-tdep.c | 26 +
> > > gdb/annotate.c | 93 +++-
> > > gdb/annotate.h | 18 +-
> > > gdb/doc/gdb.texinfo | 27 +
> > > gdb/gdbarch-gen.c | 32 ++
> > > gdb/gdbarch-gen.h | 15 +-
> > > gdb/gdbarch_components.py | 20 +-
> > > gdb/shadow-stack.c | 480 +++++++++++++++++-
> > > gdb/shadow-stack.h | 6 +
> > > gdb/stack.c | 73 +--
> > > gdb/stack.h | 55 ++
> > > .../gdb.arch/amd64-shadow-stack-cmds.exp | 88 ++++
> > > gdb/testsuite/gdb.base/options.exp | 2 +-
> > > 14 files changed, 875 insertions(+), 63 deletions(-)
> >
> > Thanks.
> >
> > > diff --git a/gdb/NEWS b/gdb/NEWS
> > > index 74fc353d7e9..37b3add11ed 100644
> > > --- a/gdb/NEWS
> > > +++ b/gdb/NEWS
> > > @@ -3,6 +3,9 @@
> > >
> > > *** Changes since GDB 17
> > >
> > > +* New "-shadow" command line option for the backtrace command to
> > > +print the
> > > + shadow stack backtrace instead of the normal backtrace.
> > > +
> > > * Support for .gdb_index sections with version less than 7 has been
> > > removed.
> >
> > This part is okay.
> >
> > > +A shadow stack is supported, for instance, with the Intel
> > > +Control-Flow Enforcement Technology (@xref{CET}) on x86 and the
> > > +Guarded Control Stack feature (@xref{GCS}) on AArch64.
> > ^^^^^^^^^^
> > This should use @pxref, not @xref.
>
> Yes, thanks!
>
> > > +This option may be combined with “-frame-info” and implies ‘-no-filters’
> > > +and ‘-frame-arguments none’. ^^^^^^^^^^^^^ ^^^^^^^^^^^^^
> > ^^^^^^^^^^^^^^^^^^^^^^^
> > All those should use @code and without the quotes.
>
> Yes, will fix, too.
>
> > > +@node GCS
> > > @subsubsection AArch64 Guarded Control Stack @cindex Guarded
> > Control
> > > Stack, AArch64 @cindex GCS, AArch64 @@ -27248,6 +27274,7 @@
> > registers
> > >
> > > @end itemize
> > >
> > > +@node CET
> > > @subsubsection Intel Control-Flow Enforcement Technology.
> > > @cindex Intel Control-Flow Enforcement Technology.
> >
> > You are adding @node's, but AFAICT you don't change the @menu of the
> > parent section. That can only work with recent Texinfo versions,
> > where @menus are updated automatically. Please update the parent
> > @menu as part of the patch, to not rely on those recent versions.
> > Reviewed-By: Eli Zaretskii <eliz@gnu.org>
>
> Ah, I wasn't aware, thanks!
>
> Now it looks like
> @menu
> * AArch64::
> * GCS::
> * x86::
> * CET::
> * Alpha::
> [...]
> @end menu
>
> This looks somehow unconventional since CET/GCS are subsubsections (and
> no subsections like AArch64/x86) but since this is a requirement of old
> texinfo versions I'll simply add it.

Hi Eli,

I just noticed the following warnings on fedora with texinfo 7.2:

gdb.texinfo:26867: warning: node next pointer for `AArch64' is `x86' but next is `GCS' in menu
gdb.texinfo:27232: warning: node `x86' is next for `GCS' in menu but not in sectioning
gdb.texinfo:27232: warning: node `AArch64' is prev for `GCS' in menu but not in sectioning
gdb.texinfo:27232: warning: node up pointer for `GCS' is `AArch64' but up is `Architectures' in menu
gdb.texinfo:27280: warning: node next pointer for `x86' is `Alpha' but next is `CET' in menu
gdb.texinfo:27280: warning: node prev pointer for `x86' is `AArch64' but prev is `GCS' in menu
gdb.texinfo:27321: warning: node `Alpha' is next for `CET' in menu but not in sectioning
gdb.texinfo:27321: warning: node `x86' is prev for `CET' in menu but not in sectioning
gdb.texinfo:27321: warning: node up pointer for `CET' is `x86' but up is `Architectures' in menu
gdb.texinfo:27362: warning: node prev pointer for `Alpha' is `x86' but prev is `CET' in menu

for the menu changes:
~~~
@menu
* AArch64::
+* GCS::
* x86::
+* CET::
* Alpha::
* MIPS::
* HPPA::
~~~

This did not appear when I compiled this on different systems
(ubuntu texinfo version 6.8 or 7.1), otherwise, I'd have noticed it earlier.

If I change the CET and GCS subsubsections to subsections the warning disappears...
so I think I must add a new @menu for the subsubsections.

+@menu
+* CET::
+@end menu
+
@node CET

This avoids triggering a warning. However, since none of the other AArch64 or
x86 subsubsections currently have nodes, I believe we should add nodes for
them and update the menu accordingly:

@end table

+@menu
+* SVE::
+* SME::
+* SME2::
+* PAC::
+* MTE::
+* GCS::
+@end menu
+
+@node SVE
@subsubsection AArch64 Scalable Vector Extension
@cindex Scalable Vector Extension, AArch64
@cindex SVE, AArch64
@@ -26941,6 +26951,7 @@ internally by @value{GDBN} and the Linux Kernel.

@end itemize

+@node SME

[...]

Please let me know if this works for you.

Thanks,
Christina

Intel Deutschland GmbH
Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany
Tel: +49 89 991 430, www.intel.de
Managing Directors: Harry Demas, Jeffrey Schneiderman, Yin Chong Sorrell
Chairperson of the Supervisory Board: Nicole Lau
Registered Seat: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928