From patchwork Mon Aug 26 10:52:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Capper X-Patchwork-Id: 57387 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 18457385B82F for ; Mon, 26 Aug 2024 10:53:23 +0000 (GMT) X-Original-To: elfutils-devel@sourceware.org Delivered-To: elfutils-devel@sourceware.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 0A49C3858C3A for ; Mon, 26 Aug 2024 10:53:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0A49C3858C3A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0A49C3858C3A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1724669591; cv=none; b=a7KV7CxbY3k8phq+fKPzzMGLZjGt9s9xpkW0c4wlePV9CZtwE2OAsZomo2GLNuhvDXxo5T0D4kMLeL4XYu8A9djgzbBZ4XY/N9Kf4toohCYaHH49SQBixnU57RfwNLTywUM+dS6/8M6P74iLkhZxSn5UYoTX/XwFPUcd/nidqBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1724669591; c=relaxed/simple; bh=DwQipizgl/PYYBt//B3RbveMUESAPa627lqrutEyT24=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=fmBF1s1P6mqif1P7JhLnXk99N3CAosS57MH5FtOycxG4ydQ+OTgXs5ObSBQthWeACrsX3NyJzAb+yZIvOuBWP9PcyV4PiL84NqoZNRU7yzrfgmdAajKWccP6weCI3FSajWAeQ6bDMt83oVR8PV8/7suvFIrJ6zv/hDtApWooSN4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 64B56DA7; Mon, 26 Aug 2024 03:53:35 -0700 (PDT) Received: from localhost.localdomain (usa-sjc-mx-foss1.foss.arm.com [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 832DA3F66E; Mon, 26 Aug 2024 03:53:08 -0700 (PDT) From: Steve Capper To: elfutils-devel@sourceware.org Cc: mark@klomp.org, german.gomez@arm.com, ema@debian.org, Steve Capper Subject: [PATCH v2 0/5] Enable PAC support in elfutils Date: Mon, 26 Aug 2024 11:52:52 +0100 Message-ID: <20240826105257.2669-1-steve.capper@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: elfutils-devel-bounces~patchwork=sourceware.org@sourceware.org Hello, This series enables Pointer Authentication (PAC) support in elfutils. The first three patches were originally posted by German Gomez. I've rewritten a new patch to extend the dwfl_thread_state_registers function to handle the PAC mask and added an extra patch that was required to debug core dumps from PAC enabled applications. These patches were tested on Debian Testing and Fedora 40 running on an Apple M1 MacBook Pro (the CFLAG -mbranch-protection=standard needs to be supplied to the build). Without this series applied, the following tests failed: * run-backtrace-native.sh * run-backtrace-dwarf.sh * run-backtrace-native-core.sh * run-deleted.sh I am happy to chop/change bits as necessary. A guide to pointer authentication can be found here: https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/Learn%20the%20Architecture/Providing%20protection%20for%20complex%20software.pdf Changed in V2: * moved DW_AARCH64_RA_SIGN_STATE to cfi.h, * dwfl_thread_state_aarch64_pauth API dropped, (using dwfl_thread_state_registers instead) * AArch64 #ifdefs removed, ptrace logic for PAC consolidated into aarch64_initreg.c Cheers,