From nobody Sun Aug 9 09:07:40 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 4hHsVB5Qfwz6nMDY for ; Sun, 09 Aug 2026 09:07:46 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hHsVB0Rptz3lpj for ; Sun, 09 Aug 2026 09:07:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786266466; 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=TUkGZhfJ8KwQ98BiqDCZXaCnAka5vjRgeI95LNyI4bI=; b=N8izO3ZsNcIv/5meAZ3ZL3WZKLwxzdAz1Z7H5WF7goH4eXQSR5Oq3jWsA3kVZRrRiVEKNY FbwjEEaqeJzJ15uc2emgaz8jdS0NK4bdzLDbWpWtQQuQ7pgigZnd/S35mnMB43ferghNVa wCnjXPuRcC1/nB5d6m20VPWBIZ5L+UR1aQCsNTAOzKQzNLmD4Or5nkcHXptx37LYpy1yuz jiJjx5KseM7CIQJAtNxTGPZQbwjCfkAfPgVpm5jCkeONLlDnH27ZGGuuoS+lunDXGkKbOY zRPd4M+ir/4ifUO5qo+idaUv27GDspJDm5FvmSYgzlaF+yepxW03dUIk+YGMeQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786266466; a=rsa-sha256; cv=none; b=PLO4neG8lfDNtRaNKewl+RGWt1C8CMvAuCI5XnvJcQXwXofDvka8MHdkFSOUTVA8sqt/tR ibe4TbW+i3Gfzz8W977qppfsQirV4j8Pdw4FfqpffnOVdVf4X8hWqsRf7JeBrAm3YTKfa+ DfCSRXmCf8J063EssjSFGtTVLo623folZKV8zBSRUwAmMS2+sbzWdoYYouQaYu4ZD7D7Ew k7/qW/vMxSLknwdwaPvLR816XireNn0qDWu8wlVvzJn2oz5EQ6K+psZWgdxGteRwNPbUvM BcjO/UmrB6gvnKVcwTKFBdWjItN2kWDeqxe0mV6j2CuzCS3a0Er4f8mFHAIDZg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786266466; 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=TUkGZhfJ8KwQ98BiqDCZXaCnAka5vjRgeI95LNyI4bI=; b=yehqcfxwvevEEWD5rDZJEq6DVCRfDpQA8Ms+ndGnOTVyK9qGaY4VXnyKhZ4yJOZWhPJWjs u4fk7gELL78LviOzPQ6k4mRecuGdyKJ4Kz1ei4WWS8bsZFZRxlZtc0mSbDnoeLMyad5ySB N2Y8aWY0GbBZ9DP4t3le1o7lCmbdx1PjqS2x2wjb2i5qCgdL6xAJQNRAdDnuHUzQHHpEyP 1uKOWEfhEfra8SLOdrENml1Bd+Mq0Jr9yvYUO3SPQ0OLA7Y5DepeSEKgwN8I1Zv1wk0fk1 wGd9MvDNl4Vn6jbiINGZ9p3uEHwXkBHsEerh/jmFoeJz5Ei5J4YW8Vl92Eiv8Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hHsV94QXVz2FV for ; Sun, 09 Aug 2026 09:07:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26b4c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 09 Aug 2026 09:07:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Piotr Kubaj Subject: git: 185a03ad8aa8 - main - libgcc_s: export the IEEE-128 long double runtime on powerpc64le 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: pkubaj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 185a03ad8aa84baf6c644688fc7687d2a3ebf1c5 Auto-Submitted: auto-generated Date: Sun, 09 Aug 2026 09:07:40 +0000 Message-Id: <6a78435c.26b4c.125c331d@gitrepo.freebsd.org> The branch main has been updated by pkubaj: URL: https://cgit.FreeBSD.org/src/commit/?id=185a03ad8aa84baf6c644688fc7687d2a3ebf1c5 commit 185a03ad8aa84baf6c644688fc7687d2a3ebf1c5 Author: Piotr Kubaj AuthorDate: 2026-08-09 09:02:40 +0000 Commit: Piotr Kubaj CommitDate: 2026-08-09 09:07:30 +0000 libgcc_s: export the IEEE-128 long double runtime on powerpc64le On powerpc64le with IEEE-128 long double, the long-double compiler-runtime helpers are the *kf* soft-float functions (built from the tf sources, renamed via -D in lib/libcompiler_rt/Makefile.inc) plus the complex multc3/__divtc3. They are compiled into libgcc_s.so by the powerpc64le SRCF block, but were never added to Symbol.map, so they stayed local and unexported. Every other IEEE-128 architecture already exports its scalar long-double runtime -- aarch64 and riscv list the tf helpers in GCC_4.6.0. powerpc64le was simply missed. Because the helpers are unexported, any clang-built shared library that uses long double leaves them undefined (permitted in a DSO), and linking an executable against that DSO then fails under lld's default --no-allow-shlib-undefined. For example science/harminv fails to link its binary against its own libharminv.so with undefined multc3/divtc3; at -O0, mulkf3/addkf3/__subkf3/__unordkf2 appear as well. Export the full runtime, gated on the PowerPC-specific LONG_DOUBLE_IEEE128 predefine so no other architecture is affected: complex multc3/divtc3 in GCC_4.0.0 (beside the other complex mul*c3), and the 28 scalar *kf* functions in GCC_7.0.0. Node placement follows glibc/gcc symbol-versioning history. Differential Revision: https://reviews.freebsd.org/D58248 --- lib/libgcc_s/Symbol.map | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lib/libgcc_s/Symbol.map b/lib/libgcc_s/Symbol.map index 91fdeac3f2cf..ba656383bd5c 100644 --- a/lib/libgcc_s/Symbol.map +++ b/lib/libgcc_s/Symbol.map @@ -161,6 +161,10 @@ GCC_4.0.0 { __mulsc3; #if defined(__amd64__) || defined(__i386__) __mulxc3; +#endif +#if defined(__LONG_DOUBLE_IEEE128__) + __divtc3; + __multc3; #endif __powidf2; __powisf2; @@ -233,4 +237,34 @@ GCC_7.0.0 { #ifdef __i386__ __divmoddi4; #endif +#if defined(__LONG_DOUBLE_IEEE128__) + __addkf3; + __subkf3; + __mulkf3; + __divkf3; + __eqkf2; + __gekf2; + __gtkf2; + __lekf2; + __ltkf2; + __nekf2; + __unordkf2; + __extendsfkf2; + __extenddfkf2; + __trunckfsf2; + __trunckfdf2; + __fixkfsi; + __fixkfdi; + __fixkfti; + __fixunskfsi; + __fixunskfdi; + __fixunskfti; + __floatsikf; + __floatdikf; + __floattikf; + __floatunsikf; + __floatundikf; + __floatuntikf; + __powikf2; +#endif };