From nobody Fri Oct 3 06:33:24 2025 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C12BE2ED87C for ; Thu, 4 Sep 2025 22:39:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757025563; cv=none; b=Bk6MvnCmQIEy4TwE/wZxZacbHYyvR4L7MFCnMWpavnpE9m+chOU+Bn3+F9r5wSC+xt+kXQfeZMBorgZdTReX0WnV4snEJ7rs5fL22oZQasrLy6+ZD7FJvfn5SgayXLqP0dJbvrT7e6sydeOsAEQAkDLMMEpWfQ+O0gvvWZSQYNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757025563; c=relaxed/simple; bh=NovLOGBdyArFTxtU+57EVnKh/sjgYEL5oQ0KRAhMNk8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ohDvH8lakgLc4vZduj7Jnx6ttxMZJZ8YnNQllo7w0kSqgfoZdTsQ0E6lvHx74HRBXv3hIesrB7W3pYhzKb9AlcUtbEy75YfdiqMgrbek21rvJiH699x8w2gEhQLYva+AG3J5ZGvGLi8e3D/7VoA0v2e9k2oVl+lqa6FlUi8XQ/o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--dylanbhatch.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=3+mP/jxQ; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--dylanbhatch.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="3+mP/jxQ" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-32bbe7c5b87so285172a91.3 for ; Thu, 04 Sep 2025 15:39:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1757025561; x=1757630361; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=2m08r/ZQjtbTIB1gTP1Sld7JP5u72ORtVv9DJEb0tSQ=; b=3+mP/jxQ0ziCoP9Ai1chQHA6UMMd5teHT6Uqo12P1qQPcKbx2JHSORrMDmISmM3D27 7I7ar/02FXtPV7gLQyH6ADtcxco6Rgqocku51fmsRr0H+FLYVUl+KZdU2DkCL4zJc7KS MBhW9NAPi7leJl5fTywmfDSRqA/2EzcLUIyKQX/jxbVMjeAUNh05F3dcilyXm56hwjZv /5r1ewuEe95hrHBG6Fa5WaFKzBAVyrV7C69wFVmtPXvBDq+UJI2M7FBKKCXDngqueWMk 2manxpxiOtbqkdy3Hb+enQvA3oVp29cnEfONL1Ni26m88HzlOvF4HDHtq4cTqByYRNTg 8WAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757025561; x=1757630361; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2m08r/ZQjtbTIB1gTP1Sld7JP5u72ORtVv9DJEb0tSQ=; b=LoHd9arN2TzId5l3uvfhnHwduP9J50c8CTCHUEXPlJtM/TrTMsK5aLrpMoQkSsVNxk vsgdkhcByeGc4QKn0QBF8PPRgoUHp4VbuFrfPUSgwafqhi0N5VRFySmxOw6hK1NdCyVf +vvyqW2SeixUPvZGEwHnrsicejOJG7uebg5qPYPcmXcUUoAtRk1MOd7f5CJK/j0AbAG1 UhvFtnJDhLUXjLwPyGuJNQiAeTKCdkf2SdyGe5p8bf8GW7Q2kiNqUfRKK/XqoKPcpggm uaHvgRrRR4VXKf6wOaQ9XKigfyV/HmNXBPPomkh5KIEf0zLC5qRUmfhHBb0oQsz70ZzO sLPg== X-Forwarded-Encrypted: i=1; AJvYcCVeCyadu8jDnvfz1DYHJSMEv7T3bZVgY44/lA0F9oFJ0+xm1Ar7siTYn4BEtFPAm4tqplcCxCfPD3h+uY4=@vger.kernel.org X-Gm-Message-State: AOJu0YzMXqBr/LSbudItSRhmFcfVurwKGlYBKzg1xeWUvBi/TxhEExCf Hpfz9KbTsBaYfaYP6nGTRWf3ouyjHImDk4LsgwnQto8f9wllHoBLkWTarJBcKhI9fVArw8iM7Er dDbsoKJ31zSsv0R6BfiyEUL0Ptw== X-Google-Smtp-Source: AGHT+IEydTUhEuAQ3A1H8zKyclA89jCNB3VUkBozS1oBCNaZG2tV6zRAiEaoyka9mctrU/XAtHk0Qslbb13/nP1pWg== X-Received: from pjbsx14.prod.google.com ([2002:a17:90b:2cce:b0:32b:682f:e6ca]) (user=dylanbhatch job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:1d03:b0:320:fda8:fabe with SMTP id 98e67ed59e1d1-328156ba3b0mr23030730a91.22.1757025561033; Thu, 04 Sep 2025 15:39:21 -0700 (PDT) Date: Thu, 4 Sep 2025 22:38:47 +0000 In-Reply-To: <20250904223850.884188-1-dylanbhatch@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250904223850.884188-1-dylanbhatch@google.com> X-Mailer: git-send-email 2.51.0.355.g5224444f11-goog Message-ID: <20250904223850.884188-4-dylanbhatch@google.com> Subject: [PATCH v2 3/6] unwind: add sframe v2 header From: Dylan Hatch To: Josh Poimboeuf , Steven Rostedt , Indu Bhagat , Peter Zijlstra , Will Deacon , Catalin Marinas , Jiri Kosina Cc: Dylan Hatch , Roman Gushchin , Weinan Liu , Mark Rutland , Ian Rogers , linux-toolchains@vger.kernel.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org, joe.lawrence@redhat.com, Puranjay Mohan , Song Liu , Prasanna Kumar T S M Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add sframe header so that we know how to access the sframe section generated by compilers. This is the sframe header file borrowed from the patchset [1] Josh Poimboeuf according to sframe v2 spec [2]. [1]: https://lore.kernel.org/all/f27e8463783febfa0dabb0432a3dd6be8ad98412.1= 737511963.git.jpoimboe@kernel.org/ [2]: https://sourceware.org/binutils/docs/sframe-spec.html Signed-off-by: Weinan Liu Signed-off-by: Dylan Hatch Reviewed-by: Prasanna Kumar T S M --- kernel/sframe.h | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 kernel/sframe.h diff --git a/kernel/sframe.h b/kernel/sframe.h new file mode 100644 index 000000000000..e9045f980fee --- /dev/null +++ b/kernel/sframe.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * From https://www.sourceware.org/binutils/docs/sframe-spec.html + */ +#ifndef _SFRAME_H +#define _SFRAME_H + +#include + +#define SFRAME_VERSION_1 1 +#define SFRAME_VERSION_2 2 +#define SFRAME_MAGIC 0xdee2 + +#define SFRAME_F_FDE_SORTED 0x1 +#define SFRAME_F_FRAME_POINTER 0x2 + +#define SFRAME_ABI_AARCH64_ENDIAN_BIG 1 +#define SFRAME_ABI_AARCH64_ENDIAN_LITTLE 2 +#define SFRAME_ABI_AMD64_ENDIAN_LITTLE 3 + +#define SFRAME_FRE_TYPE_ADDR1 0 +#define SFRAME_FRE_TYPE_ADDR2 1 +#define SFRAME_FRE_TYPE_ADDR4 2 + +#define SFRAME_FDE_TYPE_PCINC 0 +#define SFRAME_FDE_TYPE_PCMASK 1 + +struct sframe_preamble { + u16 magic; + u8 version; + u8 flags; +} __packed; + +struct sframe_header { + struct sframe_preamble preamble; + u8 abi_arch; + s8 cfa_fixed_fp_offset; + s8 cfa_fixed_ra_offset; + u8 auxhdr_len; + u32 num_fdes; + u32 num_fres; + u32 fre_len; + u32 fdes_off; + u32 fres_off; +} __packed; + +#define SFRAME_HEADER_SIZE(header) \ + ((sizeof(struct sframe_header) + (header).auxhdr_len)) + +#define SFRAME_AARCH64_PAUTH_KEY_A 0 +#define SFRAME_AARCH64_PAUTH_KEY_B 1 + +struct sframe_fde { + s32 start_addr; + u32 func_size; + u32 fres_off; + u32 fres_num; + u8 info; + u8 rep_size; + u16 padding; +} __packed; + +#define SFRAME_FUNC_FRE_TYPE(data) (data & 0xf) +#define SFRAME_FUNC_FDE_TYPE(data) ((data >> 4) & 0x1) +#define SFRAME_FUNC_PAUTH_KEY(data) ((data >> 5) & 0x1) + +#define SFRAME_BASE_REG_FP 0 +#define SFRAME_BASE_REG_SP 1 + +#define SFRAME_FRE_CFA_BASE_REG_ID(data) (data & 0x1) +#define SFRAME_FRE_OFFSET_COUNT(data) ((data >> 1) & 0xf) +#define SFRAME_FRE_OFFSET_SIZE(data) ((data >> 5) & 0x3) +#define SFRAME_FRE_MANGLED_RA_P(data) ((data >> 7) & 0x1) + +#endif /* _SFRAME_H */ --=20 2.51.0.355.g5224444f11-goog