From nobody Mon Dec 29 02:12:28 2025 X-Original-To: dev-commits-src-branches@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 4dffqw5SNqz6LWB5 for ; Mon, 29 Dec 2025 02:12:28 +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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dffqw4MyJz3jYv for ; Mon, 29 Dec 2025 02:12:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1766974348; 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=rkeaubJO5nD5RB0q2HG+9pNfRJeflndXQxifzBHV220=; b=tpGYWuYjMF58HUvou1pxU9/lkgSW4sDnm4CDLVkDJKxoBZ2Ma8AseA6GjNkxvWvghZWeqq 097TnRz4+wHeTzHQOR0/Tpl/U6VmQcp4+p6uvD1cgQwTuOBGBxrv8j1rfuOHM58URO1l2Y 4xHm9pO87a0459E2FyShWb+1hH4c0eUKtISIMvbPFNHB9HG7hYI4Qw++H1Yi7E4voZEOpP yKtoyutdzJKqWConO2jT67P1lqths2PQqrlVVq6Dj3MT7CVtmAxJeJ1NYpqe87tdjnD+t8 TCpfxu9QBjDA8WSpfHfeJ//BlHHtdpLPeDpBM9LruYYK9spBUD/tLh6qDwnTsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1766974348; 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=rkeaubJO5nD5RB0q2HG+9pNfRJeflndXQxifzBHV220=; b=WjPEYrSHFTU8rp2c5E9IIlGPxcSsyqGoo+bprQ8AWjfC4bkT01h0XaxqC9EMTcS29JedrY iJGApqdTBIJ5k0gTDArYc5SPQnc9KkvHt4n0GO5iuu2SpAiWwTtdF98hB0dkDAYI/XSpNu HgcOnfyDexZz9ZeGiP6rRG3GeJupY08x0cqxF+TY1Ij811oIezxuI7BlN6HJ8m9JaouTQB ZPbM33JCYkNr7Cz7jXKiHMlt7yZHsNz5WZ8QCfhiBcBOD1KPDQ1cRfXliIKmGLmvQtBkbL h2BgXRJIIfg/ia3SSUkvIqfj4FSSQi8hkCxjtue0wqIetTq/Pbki08uQCPH5Qg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1766974348; a=rsa-sha256; cv=none; b=sNuAD5xyxKjDr6IUC17WZeyvRL+FfGQ7+Li0SJ0Zi4CzLxH52o8R22w+L0kF3yoVsKtf0o iYGkRhjSUwh2qHrf6WvdyZkJt4sWniqhH8kuZ3IKKSgeMkSoDWgBYABJqr6Ww3RtiKXBr+ ApaCFbxmuSe29Jq+mOMEPnUyoLFEPhUYE2vW/LPSKwHV463jxUazfhtI/Kp7qDmsf2WhUS wurHNAGrKOgaKXsWm2QqxpDEQZfltU2/6c6BdmHc/Bc7GqVFfIgjvT6FaZ42d0mziZsjnZ DySikvqW5ih3pMDpHRpwPIuIM+CLE5vlQmiiG1dniS4XkwO3tDlLYD0f2K4sxw== 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 4dffqw3g6Dz19lx for ; Mon, 29 Dec 2025 02:12:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e9d7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 29 Dec 2025 02:12:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: 4660accec8d3 - stable/14 - Reduce number of external symbols in libllvm, libclang and liblldb List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 4660accec8d3e31b513bcbcf57d3a3a532ea60ca Auto-Submitted: auto-generated Date: Mon, 29 Dec 2025 02:12:28 +0000 Message-Id: <6951e38c.3e9d7.5d081105@gitrepo.freebsd.org> The branch stable/14 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=4660accec8d3e31b513bcbcf57d3a3a532ea60ca commit 4660accec8d3e31b513bcbcf57d3a3a532ea60ca Author: Dimitry Andric AuthorDate: 2025-12-21 21:37:57 +0000 Commit: Dimitry Andric CommitDate: 2025-12-29 02:11:13 +0000 Reduce number of external symbols in libllvm, libclang and liblldb In commit 2e47f35be5dc libllvm, libclang and liblldb were converted into private shared libraries. This allowed clang, lld, lldb, and other llvm tools to be linked against these shared libraries, which makes them smaller and avoids duplication. However, upstream builds the shared libraries using several visibility options, which reduces the number of external symbols, and makes the libraries a bit smaller. On my test machine: * libprivatellvm.so goes from 75643 to 34706 symbols (~54% reduction) * libprivateclang.so goes from 53250 to 33531 symbols (~37% reduction) * libprivatelldb.so goes from 27242 to 18798 symbols (~31% reduction) Note: to get the full benefit, a clean build is required. Incremental builds should still work, but I didn't want to force a full rebuild on everybody. MFC after: 1 week (cherry picked from commit cf1eaaf41cefe7e3aef45f6dab862191a3939ed8) --- lib/clang/libllvm/Makefile | 12 ++++++++++++ lib/clang/llvm.build.mk | 1 + 2 files changed, 13 insertions(+) diff --git a/lib/clang/libllvm/Makefile b/lib/clang/libllvm/Makefile index 2060f5f52c91..9ea816fd4e10 100644 --- a/lib/clang/libllvm/Makefile +++ b/lib/clang/libllvm/Makefile @@ -49,6 +49,8 @@ CFLAGS+= -DBLAKE3_NO_AVX512 -DBLAKE3_NO_AVX2 -DBLAKE3_NO_SSE41 \ CFLAGS+= -DBLAKE3_USE_NEON=0 .endif +CFLAGS+= -DLLVM_BUILD_LLVM_DYLIB + SRCDIR= llvm/lib # Explanation of different SRCS variants below: @@ -2051,6 +2053,16 @@ SRCS_ALL+= ${SRCS_COV} SRCS+= ${GENSRCS} SRCS+= ${SRCS_ALL:O} +# Optimization: for all source files under Target/*/*, use -fvisibility=hidden, +# which reduces the number of external symbols in the resulting shared library. +# This is also what upstream does. +.for src in ${SRCS} +. if "${src:MTarget/*/*}" +CFLAGS.${src:T}+= -fvisibility=hidden +.info ${src}: CFLAGS.${src:T} +. endif +.endfor + llvm/CodeGen/GenVT.inc: ${LLVM_SRCS}/include/llvm/CodeGen/ValueTypes.td ${LLVM_MIN_TBLGEN} -gen-vt \ -I ${LLVM_SRCS}/include -d ${.TARGET}.d -o ${.TARGET} \ diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk index 2520637e2d06..aeee2467e4be 100644 --- a/lib/clang/llvm.build.mk +++ b/lib/clang/llvm.build.mk @@ -122,6 +122,7 @@ LDFLAGS+= -Wl,-m,elf64lriscv_fbsd CXXSTD?= c++17 CXXFLAGS+= -fno-exceptions CXXFLAGS+= -fno-rtti +CXXFLAGS+= -fvisibility-inlines-hidden .if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) CXXFLAGS.clang+= -stdlib=libc++ .else