From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id O4OBLlaC0mimLA8AWB0awg (envelope-from ) for ; Tue, 23 Sep 2025 07:19:50 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=EZFlqQiU; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id ADFD71E0BA; Tue, 23 Sep 2025 07:19: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 211171E047 for ; Tue, 23 Sep 2025 07:19:49 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8C1DC3858408 for ; Tue, 23 Sep 2025 11:19:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8C1DC3858408 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=EZFlqQiU Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) by sourceware.org (Postfix) with ESMTPS id 00D9B3858C2D for ; Tue, 23 Sep 2025 11:18:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 00D9B3858C2D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 00D9B3858C2D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.17 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758626338; cv=none; b=D+GdZsUiQccG3Z8UubTEhUbiPS8pePpR3wMJvUGcsuniExcB5aA2+ckfoab2J2jHSO1LPDKzgExmIPFQYR8+kGuO4AX0He1wkoMN4wIF6J31d82XAEhrAUlG8dYs7duHP/A/vaHb7lVYAX+nAFnJekLxr0vQWaRsonzt2m+oXt4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1758626338; c=relaxed/simple; bh=+4gmoVs/oVVg6wovhhYbraJMHNPB+BygYD1YSdQzaH0=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=n9HdoytAwDahDnFcEWnghlAXf2g8hTyZBVcQ1V9BSxB5OWYAhiInREna0Cq9tZkRvrvMOeOiZt1f2ytgizelPtzmNdmjeDFPohuPQSDTjme2vqIdxvpflVkogD9gjY9E2s294cL2kt7P4VapU2TSK+9NUTlDbuJYDcw8v4EfNno= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 00D9B3858C2D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1758626338; x=1790162338; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=+4gmoVs/oVVg6wovhhYbraJMHNPB+BygYD1YSdQzaH0=; b=EZFlqQiUiFFgAjMDd67pluz94hkRXo1SH/hWZ2NA/HrEecgNOBPqpS86 IMCMTXanHbFKnaIYrgXf/aEEtBm+qnX483z6Y8i6qKyQiGn3oU2HtikHK eUUue2gcxzhKKyREMBkAl1Vc0QkhK7cjVCCWtmm+XUfEozNVLxfSD0y1z GRLHfKDN+uWZzJqZ2Qw5llVgsajqqfi+/wNd53BgMG4SfsK6KX0BBVvEy vzx3dVwHBZDZiJ2wxiWUJGPQkQLolkeDVK9Qp2Ye0jposNj/QrDSlzAFK luNJSQp60/mNLxn5m3K9uJeBdqqq+OJqYB1B25TqLIT8O/CMzDiA5iqXh Q==; X-CSE-ConnectionGUID: C3mU0q5+QdqP3adEL1JTmw== X-CSE-MsgGUID: UO7kwzpHRAuoCzvz9YvsCQ== X-IronPort-AV: E=McAfee;i="6800,10657,11561"; a="60827488" X-IronPort-AV: E=Sophos;i="6.18,287,1751266800"; d="scan'208";a="60827488" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2025 04:18:57 -0700 X-CSE-ConnectionGUID: TQtuSaqmS/qdg2sEahOggA== X-CSE-MsgGUID: cNx0eTzPRtKPPHps3NpHaw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,287,1751266800"; d="scan'208";a="177118607" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Sep 2025 04:18:56 -0700 From: Christina Schimpe To: gdb-patches@sourceware.org Subject: [PATCH 0/9] Add new command to print the shadow stack backtrace Date: Tue, 23 Sep 2025 11:18:33 +0000 Message-Id: <20250923111842.4091694-1-christina.schimpe@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 Hi all, as already indicated in the discussion https://sourceware.org/pipermail/gdb/2023-December/051024.html I'd like to add a command to print the shadow stack backtrace. In the discussion above the main conclusion was to use the ordinary backtrace command with a new flag: "bt -shadow". I chose a similar direction, but decided against the flag "-shadow" in favor of a new subcommand of the ordinary backtrace command: "bt shadow". This is an example shadow stack backtrace on amd64: ~~~ (gdb) bt shadow #0 0x000000000040111f in call1 at amd64-shadow-stack.c:14 #1 0x000000000040112f in main at amd64-shadow-stack.c:21 #2 0x00007ffff7c3fe70 in __libc_start_call_main at ../sysdeps/nptl/libc_start_call_main.h:58 #3 0x00007ffff7c3ff20 in __libc_start_main_impl at ../csu/libc-start.c:128 #4 0x0000000000401045 in _start ~~~ I am happy about your feedback! Christina Christina Schimpe (9): gdb: Generalize handling of the shadow stack pointer. 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: Implement '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, mi: Add -shadow-stack-list-frames command gdb/Makefile.in | 2 + gdb/NEWS | 17 + gdb/aarch64-linux-tdep.c | 51 +- gdb/aarch64-tdep.c | 42 +- gdb/amd64-linux-tdep.c | 164 ++--- gdb/amd64-tdep.c | 20 + gdb/annotate.c | 93 ++- gdb/annotate.h | 18 +- gdb/doc/gdb.texinfo | 114 +++ gdb/gdbarch-gen.c | 158 ++++- gdb/gdbarch-gen.h | 80 ++- gdb/gdbarch.h | 1 + gdb/gdbarch_components.py | 100 ++- gdb/infcall.c | 4 +- gdb/linux-tdep.c | 2 + gdb/mi/mi-cmd-stack.c | 146 ++++ gdb/mi/mi-cmds.c | 2 + gdb/mi/mi-cmds.h | 1 + gdb/shadow-stack.c | 662 ++++++++++++++++++ gdb/shadow-stack.h | 106 +++ gdb/stack.c | 382 ++++++---- gdb/stack.h | 55 ++ .../amd64-shadow-stack-backtrace-signal.exp | 54 ++ .../gdb.arch/amd64-shadow-stack-cmds.exp | 88 +++ .../gdb.arch/amd64-shadow-stack-signal.c | 31 + gdb/testsuite/gdb.base/help.exp | 6 +- gdb/testsuite/gdb.base/options.exp | 7 +- .../gdb.mi/mi-shadow-stack-signal.exp | 69 ++ gdb/testsuite/gdb.mi/mi-shadow-stack.exp | 65 ++ 29 files changed, 2105 insertions(+), 435 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.34.1 Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928