Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Joos, Christina" <christina.joos@intel.com>
To: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	"tom@tromey.com" <tom@tromey.com>
Subject: RE: [PATCH v4 02/13] aarch64: Implement gdbarch function top_addr_empty_shadow_stack.
Date: Mon, 21 Sep 2026 19:50:50 +0000	[thread overview]
Message-ID: <SN7PR11MB7638573FB537BC0423784E8989842@SN7PR11MB7638.namprd11.prod.outlook.com> (raw)
In-Reply-To: <87h5jvqa6f.fsf@linaro.org>

> -----Original Message-----
> From: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
> Sent: Samstag, 12. September 2026 08:03
> To: Joos, Christina <christina.joos@intel.com>
> Cc: gdb-patches@sourceware.org; tom@tromey.com
> Subject: Re: [PATCH v4 02/13] aarch64: Implement gdbarch function
> top_addr_empty_shadow_stack.
> 
> Christina Schimpe <christina.schimpe@intel.com> writes:
> 
> > @@ -3243,7 +3196,7 @@ aarch64_linux_init_abi (struct gdbarch_info info,
> struct gdbarch *gdbarch)
> >      {
> >        set_gdbarch_get_shadow_stack_pointer (gdbarch,
> >
> 	aarch64_linux_get_shadow_stack_pointer);
> 
> As I just found out and I just mentioned in my email on patch 8, ideally this
> gdbarch hook should be set unconditionally, not only when
> tdep->has_gcs_linux ().
> 
> But this would be a change unrelated to your patch. I can make it later when I
> submit patches enabling "bt -shadow" for AArch64.
> 
> > -      tdep->fn_prev_gcspr = aarch64_linux_dwarf2_prev_gcspr;
> > +      tdep->fn_prev_gcspr = dwarf2_prev_ssp;
> >      }
> >  }
> >
> > diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index
> > 848cee3043c..d789b8569d2 100644
> > --- a/gdb/aarch64-tdep.c
> > +++ b/gdb/aarch64-tdep.c
> > @@ -1908,6 +1908,26 @@ aarch64_pop_gcs_entry (regcache *regs)
> >    regcache_cooked_write_unsigned (regs, tdep->gcs_reg_base, gcs_addr
> > + 8);  }
> >
> > +/* Implement the "top_addr_empty_shadow_stack" gdbarch method.  */
> > +
> > +static bool
> > +aarch64_top_addr_empty_shadow_stack
> > +  (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
> > @@ -4783,9 +4803,13 @@ aarch64_gdbarch_init (struct gdbarch_info info,
> struct gdbarch_list *arches)
> >    /* Register a hook for converting a memory tag to a string.  */
> >    set_gdbarch_memtag_to_string (gdbarch, aarch64_memtag_to_string);
> >
> > -  /* 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);
> > +    }
> 
> On the other hand, since this is new code added by this patch, could you
> please change this to the following?
> 
>   if (tdep->has_gcs ())
>     /* 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);

Yes, of course.
One nit: I think the GDB Coding Standards still require some braces here.

So, my overall changes for this patch will look as follows (Luis requested some
comment changes, too).

~~~
$ git diff
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index d789b8569d2..94893dd4bcf 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -1923,8 +1923,8 @@ aarch64_top_addr_empty_shadow_stack
      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'.  */
+  /* The GCS grows down, and the oldest entry is the value '0', not an
+     address.  */
   return addr >= range.second - 8;
 }

@@ -4807,10 +4807,13 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
     {
       /* 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);
     }

+  /* Implementing this hook is required to allow the unwinding of
+     the shadow stack pointer in shadow-stack.c:dwarf2_prev_ssp.  */
+  set_gdbarch_top_addr_empty_shadow_stack
+    (gdbarch, aarch64_top_addr_empty_shadow_stack);
+
~~~

I hope this is ok from your side, if not please let me know. 😊

Kind Regards,
Christina
________________________________________
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.

  reply	other threads:[~2026-09-21 19:51 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-08 14:36 [PATCH v4 00/13] Add new command to print the shadow stack backtrace Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 01/13] gdb: Generalize handling of the shadow stack pointer Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 02/13] aarch64: Implement gdbarch function top_addr_empty_shadow_stack Christina Schimpe
2026-08-12 22:13   ` Luis
2026-08-25  9:01     ` Joos, Christina
2026-08-29  5:24       ` Thiago Jung Bauermann
2026-08-30 11:14         ` Joos, Christina
2026-09-03  6:49           ` Thiago Jung Bauermann
2026-09-12  6:02   ` Thiago Jung Bauermann
2026-09-21 19:50     ` Joos, Christina [this message]
2026-09-22  3:55       ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 03/13] gdb: Add get_main_func_start_pc to refactor frame.c:inside_main_func Christina Schimpe
2026-09-03  6:53   ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 04/13] gdb: Refactor 'stack.c:print_frame' Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 05/13] gdb: Introduce 'stack.c:print_pc' function without frame argument Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 06/13] gdb: Refactor 'find_symbol_funname' and 'info_frame_command_core' in stack.c Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 07/13] gdb: Refactor 'stack.c:print_frame_info' Christina Schimpe
2026-07-08 14:36 ` [PATCH v4 08/13] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace Christina Schimpe
2026-09-03  7:37   ` Thiago Jung Bauermann
2026-09-10 19:36     ` Joos, Christina
2026-09-12  5:52       ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 09/13] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements Christina Schimpe
2026-09-03  7:44   ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 10/13] gdb: Implement the hook 'is_no_return_shadow_stack_address' for amd64 linux Christina Schimpe
2026-09-03  7:49   ` Thiago Jung Bauermann
2026-09-21 19:49     ` Joos, Christina
2026-09-22  3:46       ` Thiago Jung Bauermann
2026-09-22 10:04         ` Joos, Christina
2026-07-08 14:36 ` [PATCH v4 11/13] gdb: Enable inferior calls in the shadow stack backtrace Christina Schimpe
2026-09-03  7:51   ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 12/13] gdb: Enable signal trampolines " Christina Schimpe
2026-09-03  7:53   ` Thiago Jung Bauermann
2026-07-08 14:36 ` [PATCH v4 13/13] gdb, mi: Add -shadow-stack-list-frames command Christina Schimpe
2026-09-03  8:10   ` Thiago Jung Bauermann
2026-09-22  7:49     ` Joos, Christina
2026-08-04  7:45 ` RE:[PATCH v4 00/13] Add new command to print the shadow stack backtrace Joos, Christina
2026-09-03  6:44 ` [PATCH " Thiago Jung Bauermann
2026-09-10 19:42   ` Joos, 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=SN7PR11MB7638573FB537BC0423784E8989842@SN7PR11MB7638.namprd11.prod.outlook.com \
    --to=christina.joos@intel.com \
    --cc=gdb-patches@sourceware.org \
    --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