From: "Schimpe, Christina" <christina.schimpe@intel.com>
To: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [PATCH v2 1/9] gdb: Generalize handling of the shadow stack pointer.
Date: Thu, 9 Apr 2026 11:57:26 +0000 [thread overview]
Message-ID: <SN7PR11MB76389CF586ADF8B3FA20A523F9582@SN7PR11MB7638.namprd11.prod.outlook.com> (raw)
In-Reply-To: <87tsuty5ih.fsf@linaro.org>
Hi Thiago,
Thank you for sharing the patch and the review.
I wonder if we should we split this commit into 2 separate ones:
#1 "aarch64: Implement gdbarch function top_addr_empty_shadow_stack."
#2 "gdb: Generalize handling of the shadow stack pointer."
This way you could be the author of patch #2, and I'll add my self as co-author
since I'll also move my changes from aarch64-linux-tdep.c into this patch.
With the commit "gdb: Generalize handling.." only, the GCS unwinding logic is
still functional and will be generalized in the aarch64 specific patch.
I'll also include the patch in my v3 then.
What do you think?
Christina
> -----Original Message-----
> From: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
> Sent: Freitag, 6. März 2026 04:57
> To: Schimpe, Christina <christina.schimpe@intel.com>
> Cc: gdb-patches@sourceware.org
> Subject: Re: [PATCH v2 1/9] gdb: Generalize handling of the shadow stack
> pointer.
>
> Thiago Jung Bauermann <thiago.bauermann@linaro.org> writes:
>
> > Christina Schimpe <christina.schimpe@intel.com> writes:
> >
> >> +static bool
> >> +amd64_linux_top_addr_empty_shadow_stack
> >> + (gdbarch *gdbarch, const CORE_ADDR addr,
> >> + const std::pair<CORE_ADDR, CORE_ADDR> range)
> >> {
> >> - if (regnum == gdbarch_pc_regnum (gdbarch))
> >> - reg->how = DWARF2_FRAME_REG_RA;
> >> - else if (regnum == gdbarch_sp_regnum (gdbarch))
> >> - reg->how = DWARF2_FRAME_REG_CFA;
> >> - else if (regnum == AMD64_PL3_SSP_REGNUM)
> >> - {
> >> - reg->how = DWARF2_FRAME_REG_FN;
> >> - reg->loc.fn = amd64_linux_dwarf2_prev_ssp;
> >> - }
> >> + return addr == range.second;
> >> }
> >
> > Next week I'll provide the AArch64 implementation of this hook, if you
> > can squash it into your patch.
>
> It turns out I had it in my notes for patch 6:
>
> diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index
> 836af863d3ad..112d42c6a1ac 100644
> --- a/gdb/aarch64-tdep.c
> +++ b/gdb/aarch64-tdep.c
> @@ -1909,6 +1909,23 @@ aarch64_pop_gcs_entry (regcache *regs)
> regcache_cooked_write_unsigned (regs, tdep->gcs_reg_base, gcs_addr + 8);
> }
>
> +static bool
> +aarch64_top_addr_empty_shadow_stack (gdbarch *gdbarch, const
> CORE_ADDR addr,
> + const std::pair<CORE_ADDR, CORE_ADDR>
> range) {
> + gdb_assert (addr >= range.first);
> +
> + /* For AArch64, addr must be strictly less than the upper address in the
> + range, but other architectures allow it to be equal to the upper
> + address when the stack is empty so GDB core works with those addresses
> + and can send them our way. */
> + gdb_assert (addr <= range.second);
> +
> + /* The GCS grows down, and the oldest entry isn't an address.
> + Just the value '0'. */
> + return addr >= range.second - 8;
> +}
> +
> /* Implement the "push_dummy_call" gdbarch method. */
>
> static CORE_ADDR
> @@ -4790,7 +4807,12 @@ aarch64_gdbarch_init (struct gdbarch_info info,
> struct gdbarch_list *arches)
>
> /* AArch64's shadow stack pointer is the GCSPR. */
> if (tdep->has_gcs ())
> - set_gdbarch_ssp_regnum (gdbarch, tdep->gcs_reg_base);
> + {
> + /* AArch64's shadow stack pointer is the GCSPR. */
> + set_gdbarch_ssp_regnum (gdbarch, tdep->gcs_reg_base);
> + set_gdbarch_top_addr_empty_shadow_stack
> + (gdbarch, aarch64_top_addr_empty_shadow_stack);
> + }
>
> /* ABI */
> set_gdbarch_short_bit (gdbarch, 16);
>
>
> So with the above, for this patch:
>
> Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
>
> --
> Thiago
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
next prev parent reply other threads:[~2026-04-09 11:58 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 8:05 [PATCH v2 0/9] Add new command to print the shadow stack backtrace Christina Schimpe
2026-01-23 8:05 ` [PATCH v2 1/9] gdb: Generalize handling of the shadow stack pointer Christina Schimpe
2026-02-19 17:55 ` Tom Tromey
2026-02-27 18:09 ` Schimpe, Christina
2026-02-27 18:26 ` Tom Tromey
2026-03-02 11:53 ` Schimpe, Christina
2026-04-09 9:49 ` Schimpe, Christina
2026-04-14 17:34 ` Tom Tromey
2026-04-15 7:35 ` Schimpe, Christina
2026-04-15 15:54 ` Tom Tromey
2026-02-27 22:54 ` Thiago Jung Bauermann
2026-03-06 3:15 ` Thiago Jung Bauermann
2026-03-06 3:57 ` Thiago Jung Bauermann
2026-04-09 11:57 ` Schimpe, Christina [this message]
2026-04-10 5:03 ` Thiago Jung Bauermann
2026-04-10 7:53 ` Schimpe, Christina
2026-04-09 12:06 ` Schimpe, Christina
2026-04-10 5:05 ` Thiago Jung Bauermann
2026-01-23 8:05 ` [PATCH v2 2/9] gdb: Refactor 'stack.c:print_frame' Christina Schimpe
2026-01-23 8:05 ` [PATCH v2 3/9] gdb: Introduce 'stack.c:print_pc' function without frame argument Christina Schimpe
2026-01-23 8:05 ` [PATCH v2 4/9] gdb: Refactor 'find_symbol_funname' and 'info_frame_command_core' in stack.c Christina Schimpe
2026-02-19 17:32 ` Tom Tromey
2026-04-09 12:40 ` Schimpe, Christina
2026-01-23 8:05 ` [PATCH v2 5/9] gdb: Refactor 'stack.c:print_frame_info' Christina Schimpe
2026-01-23 8:05 ` [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace Christina Schimpe
2026-01-23 8:52 ` Eli Zaretskii
2026-02-13 16:42 ` Schimpe, Christina
2026-04-14 8:43 ` Schimpe, Christina
2026-04-14 11:53 ` Eli Zaretskii
2026-04-14 13:28 ` Schimpe, Christina
2026-04-14 14:12 ` Eli Zaretskii
2026-04-14 15:05 ` Schimpe, Christina
2026-02-19 18:19 ` Tom Tromey
2026-04-09 16:48 ` Schimpe, Christina
2026-03-06 4:31 ` Thiago Jung Bauermann
2026-03-06 9:39 ` Schimpe, Christina
2026-04-09 15:12 ` Schimpe, Christina
2026-04-10 6:21 ` Thiago Jung Bauermann
2026-04-10 12:12 ` Schimpe, Christina
2026-01-23 8:05 ` [PATCH v2 7/9] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements Christina Schimpe
2026-01-23 8:47 ` Eli Zaretskii
2026-02-19 17:41 ` Tom Tromey
2026-01-23 8:05 ` [PATCH v2 8/9] gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64 linux Christina Schimpe
2026-02-19 17:43 ` Tom Tromey
2026-01-23 8:05 ` [PATCH v2 9/9] gdb, mi: Add -shadow-stack-list-frames command Christina Schimpe
2026-01-23 8:46 ` Eli Zaretskii
2026-02-13 19:17 ` Schimpe, Christina
2026-02-19 18:26 ` Tom Tromey
2026-03-02 12:39 ` [PATCH v2 0/9] Add new command to print the shadow stack backtrace 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=SN7PR11MB76389CF586ADF8B3FA20A523F9582@SN7PR11MB7638.namprd11.prod.outlook.com \
--to=christina.schimpe@intel.com \
--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