From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Qn1NNkioX2ivXSMAWB0awg (envelope-from ) for ; Sat, 28 Jun 2025 04:31:04 -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=cJNq56Z9; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id BC21E1E11E; Sat, 28 Jun 2025 04:31:04 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-10.1 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, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE 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 6DDCA1E089 for ; Sat, 28 Jun 2025 04:31:03 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 23469385C406 for ; Sat, 28 Jun 2025 08:31:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 23469385C406 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=cJNq56Z9 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by sourceware.org (Postfix) with ESMTPS id 10222385781B for ; Sat, 28 Jun 2025 08:28:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 10222385781B 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 10222385781B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.19 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1751099315; cv=none; b=vQwpnVT0KUzO3ttNpusk3wGEgiOzB+iPMJKTijXJYTTs33lsvTBRZGOp0FY8Oxyu6xxcjFGIRdak2VrrEBLDnorLVcR6atJ8xjw9IP6UvLbILqaiG6HvE5QU+pw8HPtpgSX5PQGRFgrqJ9lJUofbjXZhC9mRmMuRgCAzs9134zI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1751099315; c=relaxed/simple; bh=yuamnCdBPPw7dVR/pfOnCf3xLdz1Eos6QaSYLetOE2o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=n7anGhVIYvjeclC6PCSvazx+XRCGvPYBoWbZbjRcH/zAzWo9PwE2Nop7B/ClbThdydO0qlIz0o3Mb9rQ8c7hbBoHE2A9LQL3jhpxyPOlccPFOa6M8+tJ628YkHyDHfDhZt6AnLT8bn6LzM+rF3x3Pxw1QsfG2MHKdNnO41yjNZU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 10222385781B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1751099315; x=1782635315; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=yuamnCdBPPw7dVR/pfOnCf3xLdz1Eos6QaSYLetOE2o=; b=cJNq56Z92XFkHGTrPCJzNUqB2BqPSqOi0SNLTC6ir+b+6GBhv24mwP// kuyKjtuZp5lJt6eLEJJZVRWScsC0+8XV627NtSitZq5Qb+1tD9SBGTjGo n+QBx4f5HCTEJxsWQIEnH6VCarJY4kAPFGnvXZFv7HwTKTjRIkZGQExNI kTSGv8LdaQ1YrG8Jrsf5IPL7WH9eBd3HdVRavf4ctHpoS0fFU7XMqT92c iWHwA+J7Az11ljIyhjo0CqquW4i848SLDn+mwM0N3+qQ4AGG75TejtgnM 3O8NcipuIxQmT0pB85oXILL+DRipVcJPkjaon/94Y5EquRnPFp0reJsIW Q==; X-CSE-ConnectionGUID: YGdV1otxTn2nCoP3j7JdTg== X-CSE-MsgGUID: fgIw/+kRQ3WrUzijIDwgWg== X-IronPort-AV: E=McAfee;i="6800,10657,11477"; a="53271313" X-IronPort-AV: E=Sophos;i="6.16,272,1744095600"; d="scan'208";a="53271313" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2025 01:28:34 -0700 X-CSE-ConnectionGUID: M+Jbhh5IQgKSDXFSI2xezQ== X-CSE-MsgGUID: tKxvxQERRQGKvk3z2UTtGg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,272,1744095600"; d="scan'208";a="183917653" Received: from 0007e934a912.jf.intel.com (HELO localhost) ([10.165.58.208]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2025 01:28:33 -0700 From: Christina Schimpe To: gdb-patches@sourceware.org Cc: thiago.bauermann@linaro.org, luis.machado@arm.com Subject: [PATCH v5 00/12] Add CET shadow stack support Date: Sat, 28 Jun 2025 01:27:58 -0700 Message-ID: <20250628082810.332526-1-christina.schimpe@intel.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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, this is my v5 of the series to add amd64 shadow stack support to GDB on linux. It addresses the feedback of Luis. v4 can be found here: https://sourceware.org/pipermail/gdb-patches/2025-June/218744.html Changes since v4: - Improve some comments. - Change the test in "gdb: amd64 linux coredump support with shadow stack." to also test core file generated by the linux kernel. This requires changes for the core_find procedure to save program output, that have been implemented by Thiago already, so we include this part of the patch in this series: "gdb, testsuite: Extend core_find procedure to save program output.". The test is now very similar to the test implemented for Guarded Control Stack corefiles. Thanks to Thiago for providing the input here! I am looking forward to your feedback! Regards, Christina Christina Schimpe (12): gdb, testsuite: Extend core_find procedure to save program output. gdbserver: Add optional runtime register set type. gdbserver: Add assert in x86_linux_read_description. gdb: Sync up x86-gcc-cpuid.h with cpuid.h from gcc 14 branch. gdb, gdbserver: Use xstate_bv for target description creation on x86. gdb, gdbserver: Add support of Intel shadow stack pointer register. gdb: amd64 linux coredump support with shadow stack. gdb: Handle shadow stack pointer register unwinding for amd64 linux. gdb, gdbarch: Enable inferior calls for shadow stack support. gdb: Implement amd64 linux shadow stack support for inferior calls. gdb, gdbarch: Introduce gdbarch method to get the shadow stack pointer. gdb: Enable displaced stepping with shadow stack on amd64 linux. gdb/NEWS | 6 + gdb/amd64-linux-nat.c | 17 ++ gdb/amd64-linux-tdep.c | 218 +++++++++++++++++- gdb/amd64-tdep.c | 35 ++- gdb/amd64-tdep.h | 9 +- gdb/arch-utils.c | 10 + gdb/arch-utils.h | 5 + gdb/arch/amd64-linux-tdesc.c | 33 +-- gdb/arch/amd64-linux-tdesc.h | 7 +- gdb/arch/amd64.c | 25 +- gdb/arch/amd64.h | 10 +- gdb/arch/i386-linux-tdesc.c | 29 +-- gdb/arch/i386-linux-tdesc.h | 5 +- gdb/arch/i386.c | 19 +- gdb/arch/i386.h | 8 +- gdb/arch/x86-linux-tdesc-features.c | 60 ++--- gdb/arch/x86-linux-tdesc-features.h | 25 +- gdb/doc/gdb.texinfo | 42 ++++ gdb/features/Makefile | 2 + gdb/features/i386/32bit-ssp.c | 14 ++ gdb/features/i386/32bit-ssp.xml | 11 + gdb/features/i386/64bit-ssp.c | 14 ++ gdb/features/i386/64bit-ssp.xml | 11 + gdb/gdbarch-gen.c | 54 +++++ gdb/gdbarch-gen.h | 24 ++ gdb/gdbarch_components.py | 31 +++ gdb/i386-tdep.c | 51 +++- gdb/i386-tdep.h | 11 +- gdb/infcall.c | 14 +- gdb/linux-tdep.c | 47 ++++ gdb/linux-tdep.h | 7 + gdb/nat/x86-gcc-cpuid.h | 153 +++++++++--- gdb/nat/x86-linux-tdesc.c | 20 +- gdb/nat/x86-linux-tdesc.h | 7 +- gdb/nat/x86-linux.c | 57 +++++ gdb/nat/x86-linux.h | 4 + .../gdb.arch/amd64-shadow-stack-cmds.exp | 141 +++++++++++ .../gdb.arch/amd64-shadow-stack-corefile.c | 42 ++++ .../gdb.arch/amd64-shadow-stack-corefile.exp | 110 +++++++++ .../gdb.arch/amd64-shadow-stack-disp-step.exp | 92 ++++++++ gdb/testsuite/gdb.arch/amd64-shadow-stack.c | 35 +++ gdb/testsuite/gdb.arch/amd64-ssp.exp | 50 ++++ .../gdb.base/inline-frame-cycle-unwind.py | 4 + gdb/testsuite/lib/gdb.exp | 80 ++++++- gdb/x86-linux-nat.c | 50 +++- gdb/x86-linux-nat.h | 11 + gdb/x86-tdep.c | 21 ++ gdb/x86-tdep.h | 9 + gdbserver/i387-fp.cc | 40 ++-- gdbserver/linux-amd64-ipa.cc | 10 +- gdbserver/linux-i386-ipa.cc | 6 +- gdbserver/linux-low.cc | 50 ++-- gdbserver/linux-low.h | 7 +- gdbserver/linux-x86-low.cc | 44 +++- gdbsupport/x86-xstate.h | 7 +- 55 files changed, 1687 insertions(+), 217 deletions(-) create mode 100644 gdb/features/i386/32bit-ssp.c create mode 100644 gdb/features/i386/32bit-ssp.xml create mode 100644 gdb/features/i386/64bit-ssp.c create mode 100644 gdb/features/i386/64bit-ssp.xml create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-cmds.exp create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-corefile.c create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-corefile.exp create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-disp-step.exp create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack.c create mode 100644 gdb/testsuite/gdb.arch/amd64-ssp.exp -- 2.43.0