From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id WMFbEJqJ0mg+Mw8AWB0awg (envelope-from ) for ; Tue, 23 Sep 2025 07:50:50 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=gnu.org header.i=@gnu.org header.a=rsa-sha256 header.s=fencepost-gnu-org header.b=EE2Y4+TC; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 2B23F1E0BA; Tue, 23 Sep 2025 07:50:50 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 74A821E047 for ; Tue, 23 Sep 2025 07:50:49 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 234AE3858D29 for ; Tue, 23 Sep 2025 11:50:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 234AE3858D29 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gnu.org header.i=@gnu.org header.a=rsa-sha256 header.s=fencepost-gnu-org header.b=EE2Y4+TC Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 495243858D33 for ; Tue, 23 Sep 2025 11:49:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 495243858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 495243858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758628195; cv=none; b=sO3H8OOrRHi1OcULZ38raykuLdpTJU0ObKXktLUxMQhS/6DJSMbAtNPOrHooRBARIruGPzEB80O0NZ46THRNofmX1eJWZwLQjaxSdbaNE9ECrJj3KHuCTmOiVp/06LoQJZEtFpq64/gDHmmxhCrEZzGN5MEuA0fVirhZO1ng2tg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758628195; c=relaxed/simple; bh=HbDbrxQnt78vUnn44dEfcz4GekbrG3dxIqZQ1aGuujY=; h=DKIM-Signature:Date:Message-Id:From:To:Subject; b=fSPIHFgr2sGooDbqK0umR3wUOUv01i/62TuEMYS4kKVm2S5eSzAqI5QMI2LZoYNxDTu37Yl/tXHCdFG5iEcVXj60AOqkPh+ZhUw2yBuQAvcSX1R+icZ5+zxHPoIfwn144fmY3TuB8tKK5w+HVwbPdt4RFjCXznAunQlGgfwpkt4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 495243858D33 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v11Ws-0001sg-5z; Tue, 23 Sep 2025 07:49:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=MGpPqu6oF3DmsvDpXRiTOCxg7504SW7zc3fMzIk7Bu8=; b=EE2Y4+TCSmE7 71p6MRpMyZrR6CE5M4QvO4+GJf9DdgEHCAXU4pQDnV+IuUiT1go1ILTildFvXMtf3VgoT0ANH1gFZ ZlH8i1az6uiCPLuFbCxMGUTRnRPHB2/0VGZVX+kTrY4Mhh6nQa4zgY+kO4w1CcnbZAY7IKHqEar4x sBVC3z2lQ82mxPpW74FLjCCeTKGOBKQyTN9Q7kcr3Ym8JaP5CH026PZIuDx1+cwQ7A1aA2uIDu3Lr Hm5pjP232jaZHcQUlWUdWDCHDI9nNeCBjaYNFNw3R8E/G5/YuJDmKfJ7RvZXyL0a1z+MJZATsnAoM FGtHrtcelOwIVVZ+YSscmA==; Date: Tue, 23 Sep 2025 14:49:51 +0300 Message-Id: <86wm5pcrs0.fsf@gnu.org> From: Eli Zaretskii To: Christina Schimpe Cc: gdb-patches@sourceware.org In-Reply-To: <20250923111842.4091694-8-christina.schimpe@intel.com> (message from Christina Schimpe on Tue, 23 Sep 2025 11:18:40 +0000) Subject: Re: [PATCH 7/9] gdb: Provide gdbarch hook to distinguish shadow stack backtrace elements. References: <20250923111842.4091694-1-christina.schimpe@intel.com> <20250923111842.4091694-8-christina.schimpe@intel.com> X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org > From: Christina Schimpe > 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. > +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 "", instead of a frame with only an address? Reviewed-By: Eli Zaretskii