From nobody Mon Dec 29 02:13:10 2025 X-Original-To: dev-commits-src-all@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 4dffrk6xrwz6LWCv for ; Mon, 29 Dec 2025 02:13:10 +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 4dffrk5HF4z3kv6 for ; Mon, 29 Dec 2025 02:13:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1766974390; 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=t8CMkBSHpKTl2aqC0G/x4gvIsNTfle0F4qvcO85sFvA=; b=xjni197JQ+vbgSnw85C2zk2Oq3ZTF69hYoQvNELa56KwOHiZgc3DIOQqWv5WLDvVtvv7gT AbDJvQmuskI3q7GCkUvLuyJuLkaoV/qcuMNCay3bTSHr8DGEH8vcRRaQH/727vSjLWsqh6 xsFc2ECNix6s7QuD/YOW92+Ft1D7BLk8FKAF0E+4+SOPJXHBeLVNfkLontRteFA1BM1NLD ZD8Tp8OJ5BzkqJt90Aa7kVXiCAb7DwNSHftC3UYlCw848k3s4oFsOEWNM6ytja333wyF6M fRx6fDdY0wvOvgcWV8f2LPTcvf24ol6KJ96Lq45C/uMn+fLULmq3SrPBwfUnNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1766974390; 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=t8CMkBSHpKTl2aqC0G/x4gvIsNTfle0F4qvcO85sFvA=; b=vmoupjhewxUfMNbrtBHbgtxX6Zy0KZDSmP9ZYRM1U1NsvVvlGRejOKDwYpwlakEJ9S41R8 zbwxVfr4gcROL45q2MjIVhCwfyV61pTiS1Il6RleMDYRdQm12hqM+Y5iih/ijm7Cndya08 9aWBKg05xGF/M8zUSqt+h9PopxJrVW4z1rdxjFsBL1I7a9SS5rzH1uuPkTaBofUBNZKlO7 gOvvp1rM78GsB+tmGE7JwOgzjnm3MIkFLd/dM0nUfc+bY8f/CbpFQWukG37nLCVvaUOw8O BXBXV6bqwsHnc29QdvQIwHCiwS7/ysbuMFLRjqrkBuwg1WtCL+QGjFN5+VKhKw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1766974390; a=rsa-sha256; cv=none; b=we0gy1Z6M9pgiRDBEm+d1yKVfIx63ZbtEHBw4obKKip9W6Vbqz38zTH2Ou4Fb14B9sdqsY BWq/NGInO7nXdZ9cJ6qRxBmXNknnFUJ9HwbgbZxCaGkbgIjNy69EcgCju5/dTSb/R0Ny9m Buf/WYmqNkznv10fbs5IXN6M9UAcK5LlNWsU0Bi7IM81tek2qOksxyYU1fm09DM6EFlwS9 I0AnwkdmXW6CgUdZGXpXb7w0HUzdKenH7cFWus4OsCPCEFEHjxu5QQB9/DVc64ooGUBANg ztSdfuutX674Wo1V/IbKE58sb9qjEldhnBaH8uwoNRBWVX73tb04/VIJBKLGrw== 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 4dffrk4lzWz19T6 for ; Mon, 29 Dec 2025 02:13:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e9db by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 29 Dec 2025 02:13:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: d56ebf78c5a4 - stable/13 - Reduce number of external symbols in libllvm, libclang and liblldb List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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/13 X-Git-Reftype: branch X-Git-Commit: d56ebf78c5a4a6fdc1fd79666d9bdfa55326bbbf Auto-Submitted: auto-generated Date: Mon, 29 Dec 2025 02:13:10 +0000 Message-Id: <6951e3b6.3e9db.52d677b@gitrepo.freebsd.org> The branch stable/13 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=d56ebf78c5a4a6fdc1fd79666d9bdfa55326bbbf commit d56ebf78c5a4a6fdc1fd79666d9bdfa55326bbbf Author: Dimitry Andric AuthorDate: 2025-12-21 21:37:57 +0000 Commit: Dimitry Andric CommitDate: 2025-12-29 02:11:42 +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 2d8d9a2b0fcb..af7e501c007d 100644 --- a/lib/clang/llvm.build.mk +++ b/lib/clang/llvm.build.mk @@ -124,6 +124,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