From nobody Mon Sep 21 18:26:56 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hpWsX5mwhz6t0Dy for ; Mon, 21 Sep 2026 18:26:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hpWsX5C2vz4BsW for ; Mon, 21 Sep 2026 18:26:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790015216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5uEsc/+nxzv3WSv3NbbQg94Bz4aTOc+gdtRP2BJtzf0=; b=vLirBiTsjNsfon+otFvO64eLMe3O3EeV5vs94o1JehcREcOiy18JPYmVyzIrwKliz21VPt ufF+P9cxY7n0R+ynYGPX4KXeNhhm7lo+aj6a7F8GSy/B2XY7N37TCDW50n8wVRBFFoRt7e g7WW7GLT3g4Pa9Ni+jigYj2PuGCpXLmUE//0jTW5yponP89N6W3Xgi6DAeMUgIY4D3+IU2 aStXIbylOvQlv+9U9ErAL7MFors26pXyyEhAd5XLyhlr3cujLLwcW9vvUjdPP/31xqjiCV cT2ErfDT5yhxWYKwpPx6GgwRlz4C6xC2i+EronoOzwMy1cQeSOSxMvM9Aa3BHA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1790015216; b=AWl9REuRFDgRgHk0lYtOzXTixG0yevD9kjQR+IKYxetAVqkPJFjdh+Vu7Dv9+mxfem9WsH L5YmveuOUEL3ORHmVXgRcRm2ixUtvgCA209GlgihbH3UXoB0NL0x+kUOv67ZZLcU5ze23P kSGrbj3gtmgdwz6XqPZMJt/iC+2b+ApSs6H7PKsMIi7o6eE1c+jKFD/KzpdmmhlZsD4LAm /FS9HdM6yxYv2Tp0CRS6oi4wD7Ide11ZxVbqZEhKhQHkYXUQjUEiMqfeSkB0TdPkeevJm5 XKhIQ0XL8eHkQ3H9+jXOP2vhIEL3m/HGVLY1er+n2ayJOG3nPhsDA6GaFVWr/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1790015216; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5uEsc/+nxzv3WSv3NbbQg94Bz4aTOc+gdtRP2BJtzf0=; b=slD5jm38kgSQ/bVZ9bz+9hQJj+9gdauPkzC6/SO5KNDkmlTYiSgSCH1EJ7kaaMILtWfkiE xoJIWL2cSwNCyC4PfK/v0kXr7LVZrUlDzZ7yXELFN5v1tqssSfiZ3DvxQYV0nCIXIgox/k 9MRV5Q+wRe3qaTrTxrsNVXpntVzdHwmwVGls7yogt8w6Z17mb8vaWEp51pCpG6LSJ0DQ/l fIVGY3pTghK6HVOKMsoCdIXsu4RVFOoJQ3wsktOE1jbLAiMG+yWPTFHotBBBBCfeTkVLTt mSaH2fU0ZmWozJtC8lxTLfxZD+W9I2KK2XBozboZgrlfOFYMGhlnaaZIxqIVnw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hpWsX4FdFzXm4 for ; Mon, 21 Sep 2026 18:26:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 41de0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 21 Sep 2026 18:26:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 64a73d1b6dc9 - main - amd64/*sigtramp.S: re-enable some cfi annotations for special registers List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 64a73d1b6dc93d92daea1e2d0603fda1dddadf4a Auto-Submitted: auto-generated Date: Mon, 21 Sep 2026 18:26:56 +0000 Message-Id: <6ab176f0.41de0.58f3c642@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=64a73d1b6dc93d92daea1e2d0603fda1dddadf4a commit 64a73d1b6dc93d92daea1e2d0603fda1dddadf4a Author: Konstantin Belousov AuthorDate: 2026-09-19 09:46:19 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-21 18:25:38 +0000 amd64/*sigtramp.S: re-enable some cfi annotations for special registers Also explicitly specify .cfi_sections to emit the cfi bytecode into the loadable .eh_frame section. Reviewed by: mchoo Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D59838 --- sys/amd64/amd64/sigtramp.S | 44 ++++++++++++++++++++++++++---------------- sys/amd64/ia32/ia32_sigtramp.S | 19 ++++++++++++------ 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/sys/amd64/amd64/sigtramp.S b/sys/amd64/amd64/sigtramp.S index 9aed66a199a1..13ad8eb1acca 100644 --- a/sys/amd64/amd64/sigtramp.S +++ b/sys/amd64/amd64/sigtramp.S @@ -34,6 +34,25 @@ #include "assym.inc" +/* + * Historical notes. Keep it for now if problems with older versions + * of toolchains reappear. + * + * Gnu as complains about %fs/%gs/%es/%ds registers offsets not being + * multiple of 8, but gas + ld.bfd work for %cs/%ss. + * + * Clang IAS + ld.lld combination cannot handle any of the segment + * registers. Also, clang IAS does not know %rflags/%fs.base/%gs.base + * registers names, use dwarf registers numbers from psABI directly. + * + * LLVM libunwind from stable/13 cannot parse register numbers higher + * than 32. Disable %rflags, %fs.base, and %gs.base annotations. + */ +#if !defined(__clang__) || (__clang_major__ >= 17) +#define WORKING_CFI +#endif + + .cfi_sections .eh_frame .text /* * Signal trampoline, mapped as vdso into shared page. @@ -57,33 +76,24 @@ ENTRY(__vdso_sigcode) .cfi_offset %r13, SIGF_UC + UC_R13 .cfi_offset %r14, SIGF_UC + UC_R14 .cfi_offset %r15, SIGF_UC + UC_R15 -#if 0 -/* - * Gnu as complains about %fs/%gs/%es/%ds registers offsets not being - * multiple of 8, but gas + ld.bfd work for %cs/%ss. - * - * Clang IAS + ld.lld combination cannot handle any of the segment - * registers. Also, clang IAS does not know %rflags/%fs.base/%gs.base - * registers names, use dwarf registers numbers from psABI directly. - * - * LLVM libunwind from stable/13 cannot parse register numbers higher - * than 32. Disable %rflags, %fs.base, and %gs.base annotations. - */ +#ifdef WORKING_CFI +#ifdef __clang__ .cfi_offset %fs, SIGF_UC + UC_FS .cfi_offset %gs, SIGF_UC + UC_GS .cfi_offset %es, SIGF_UC + UC_ES .cfi_offset %ds, SIGF_UC + UC_DS +#endif #endif .cfi_offset %rip, SIGF_UC + UC_RIP -#if 0 +#ifdef WORKING_CFI .cfi_offset %cs, SIGF_UC + UC_CS - .cfi_offset 49 /* %rflags */, SIGF_UC + UC_RFLAGS + .cfi_offset %rflags, SIGF_UC + UC_RFLAGS #endif .cfi_offset %rsp, SIGF_UC + UC_RSP -#if 0 +#ifdef WORKING_CFI .cfi_offset %ss, SIGF_UC + UC_SS - .cfi_offset 58 /* %fs.base */, SIGF_UC + UC_FSBASE - .cfi_offset 59 /* %gs.base */, SIGF_UC + UC_GSBASE + .cfi_offset %fs.base, SIGF_UC + UC_FSBASE + .cfi_offset %gs.base, SIGF_UC + UC_GSBASE #endif call *SIGF_HANDLER(%rsp) /* call signal handler */ lea SIGF_UC(%rsp),%rdi /* get ucontext_t */ diff --git a/sys/amd64/ia32/ia32_sigtramp.S b/sys/amd64/ia32/ia32_sigtramp.S index 8d700e1fe912..e19a3c29ea6c 100644 --- a/sys/amd64/ia32/ia32_sigtramp.S +++ b/sys/amd64/ia32/ia32_sigtramp.S @@ -34,6 +34,11 @@ #include "ia32_assym.h" +#if !defined(__clang__) || (__clang_major__ >= 17) +#define WORKING_CFI +#endif + + .cfi_sections .eh_frame .text /* * Signal trampoline, mapped as vdso into shared page, or copied to @@ -45,7 +50,7 @@ __vdso_ia32_sigcode: .cfi_startproc .cfi_signal_frame .cfi_def_cfa %esp, 0 -#if 0 +#ifdef WORKING_CFI .cfi_offset %gs, IA32_SIGF_UC + IA32_UC_GS .cfi_offset %fs, IA32_SIGF_UC + IA32_UC_FS .cfi_offset %es, IA32_SIGF_UC + IA32_UC_ES @@ -59,15 +64,17 @@ __vdso_ia32_sigcode: .cfi_offset %ecx, IA32_SIGF_UC + IA32_UC_ECX .cfi_offset %eax, IA32_SIGF_UC + IA32_UC_EAX .cfi_offset %eip, IA32_SIGF_UC + IA32_UC_EIP -#if 0 +#ifdef WORKING_CFI .cfi_offset %cs, IA32_SIGF_UC + IA32_UC_CS - .cfi_offset %flags, IA32_SIGF_UC + IA32_UC_EFLAGS + .cfi_offset %eflags, IA32_SIGF_UC + IA32_UC_EFLAGS #endif .cfi_offset %esp, IA32_SIGF_UC + IA32_UC_ESP -#if 0 +#ifdef WORKING_CFI .cfi_offset %ss, IA32_SIGF_UC + IA32_UC_SS - .cfi_offset 93 /* %fs.base */, IA32_SIGF_UC + IA32_UC_FSBASE - .cfi_offset 94 /* %gs.base */, IA32_SIGF_UC + IA32_UC_GSBASE +#ifdef __clang__ + .cfi_offset %fs.base, IA32_SIGF_UC + IA32_UC_FSBASE + .cfi_offset %gs.base, IA32_SIGF_UC + IA32_UC_GSBASE +#endif #endif calll *IA32_SIGF_HANDLER(%esp) leal IA32_SIGF_UC(%esp),%eax /* get ucontext */