From nobody Thu Aug 28 13:10: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 4cCMFZ3pHwz660kc; Thu, 28 Aug 2025 13:10: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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cCMFZ2fyhz3qwN; Thu, 28 Aug 2025 13:10:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756386610; 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=IgxLwAX/oIrR6BxxOljvOAa28DwwaUmG9XMBrCkAH8o=; b=hejdJp2PLWjs7hL5woopqkuCxr0252CYVy+JZZF4115E4qmTfXlMEDyvh9M8mjStczrZ5s oMMDgA0WKbFAbub4Vxux0SN4xCqGBbFGqbXTVMtAaWIVeINXzKCmTRtI/14PUgIc+grKPD n8fuIYhHhTSGm0UnUGHMPU5QqmivtptHz9VdibvCuaAJ9j2iiT4s2vR/F5gzBMr8ducYk8 UDVFI4v97sTW2VFNLzZjcbufd2mi0B1nY2/LG6h9FKeZCNq92/lJ6ZTsjHKWJcSOBYa5bi vHQGQ7HpvxPm7dbxVEh5Gn94CIUsK+losXczuSPzl2tnrufuHVnw2fSrxVr7FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756386610; 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=IgxLwAX/oIrR6BxxOljvOAa28DwwaUmG9XMBrCkAH8o=; b=yo7gJaBKUV8PlQmmCsTkMxKxSiDIsauk+W8GmSU+s8BiQQL7egNO7C4TlgXUavk8c5w7N+ HmezaDLfm5JJPKwTvo6idqnr5n5sdKtNS8nLc9WjFuLsGPPbCR8gZRmpWnf9tOiGw/K9Lv kopw9ljz75bPZ9c6E612bxQeOBdjpI9lSg7Rdgn4QQp/H+c4tsLhcQuchKxCpeVxDxlbv1 gL/IInpiJFMpjmC/eaiTGFEY4GVSe5PNExXLfo2aEda9TQjN3YvSOZNNWVeWsjkOCYHR2m LdkA2B4RiADNZZm2yUbTExnq9EzI5f77vV7DYClX8oGGmNNob+m7+hFjvQeVYQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1756386610; a=rsa-sha256; cv=none; b=R91z5u8ktwva+ruvUmELHOT3KC1ura2sFYvv7lquiS9i+wKxJJv312+vDVOje5HP0CPR9Y 57FjYY10OAm6GnrM5Ugqa7IWehf7NOsyWlxrho3HEAdLgnm5CPPGsbqIYNOSBC3J+eJ/TL sOg2QOhAPBvMYSA90t8vm0csFVLl0fEstdr15LyouhXPnVxI0nJMPsEEGatHJ0rJXDXX2j Iw+Mze8TCqhl6R5rKDqz7LomSaJOMBZjvYIYYth/dwN1hprelrRPs8uHTXdW2LXh96eHmT Ygoj6zOMSvgPqbz+BsVFOwbecPPOcNnJAtIF56O5+4dpAhjwsOnH+H0limo0fQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cCMFZ1z0Kz18g6; Thu, 28 Aug 2025 13:10:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 57SDAAeB051774; Thu, 28 Aug 2025 13:10:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57SDAA91051769; Thu, 28 Aug 2025 13:10:10 GMT (envelope-from git) Date: Thu, 28 Aug 2025 13:10:10 GMT Message-Id: <202508281310.57SDAA91051769@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 959806e0a844 - main - Merge commit 7a66a26658f4 from llvm git (by Fangrui Song): 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 959806e0a8448ef5df372468b8deddc20d976702 Auto-Submitted: auto-generated The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=959806e0a8448ef5df372468b8deddc20d976702 commit 959806e0a8448ef5df372468b8deddc20d976702 Author: Ed Maste AuthorDate: 2025-08-28 12:48:17 +0000 Commit: Ed Maste CommitDate: 2025-08-28 13:07:13 +0000 Merge commit 7a66a26658f4 from llvm git (by Fangrui Song): --discard-locals/--discard-all: allow and keep symbols referenced by relocations In GNU objcopy, symbols referenced by relocations are retained. Our COFF (https://reviews.llvm.org/D56480) and Mach-O (https://reviews.llvm.org/D75104) ports port the behavior, but the ELF port doesn't. This PR implements the behavior for ELF. Close #47468 (tcl has a use case that requires `strip -x tclStubLib.o` to strip local symbols not referenced by relocations.) Pull Request: https://github.com/llvm/llvm-project/pull/130704 PR: 258820 Approved by: dim Differential Revision: https://reviews.freebsd.org/D52198 --- .../llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp | 25 +++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/contrib/llvm-project/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp b/contrib/llvm-project/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp index 075455c03415..7de9b4dd2ea1 100644 --- a/contrib/llvm-project/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp +++ b/contrib/llvm-project/llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp @@ -368,7 +368,7 @@ static Error updateAndRemoveSymbols(const CommonConfig &Config, // (like GroupSection or RelocationSection). This way, we know which // symbols are still 'needed' and which are not. if (Config.StripUnneeded || !Config.UnneededSymbolsToRemove.empty() || - !Config.OnlySection.empty()) { + !Config.OnlySection.empty() || Config.DiscardMode != DiscardType::None) { for (SectionBase &Sec : Obj.sections()) Sec.markSymbols(); } @@ -390,22 +390,23 @@ static Error updateAndRemoveSymbols(const CommonConfig &Config, if (Config.StripDebug && Sym.Type == STT_FILE) return true; - if ((Config.DiscardMode == DiscardType::All || - (Config.DiscardMode == DiscardType::Locals && - StringRef(Sym.Name).starts_with(".L"))) && - Sym.Binding == STB_LOCAL && Sym.getShndx() != SHN_UNDEF && - Sym.Type != STT_FILE && Sym.Type != STT_SECTION) - return true; - if ((Config.StripUnneeded || Config.UnneededSymbolsToRemove.matches(Sym.Name)) && (!Obj.isRelocatable() || isUnneededSymbol(Sym))) return true; - // We want to remove undefined symbols if all references have been stripped. - if (!Config.OnlySection.empty() && !Sym.Referenced && - Sym.getShndx() == SHN_UNDEF) - return true; + if (!Sym.Referenced) { + if ((Config.DiscardMode == DiscardType::All || + (Config.DiscardMode == DiscardType::Locals && + StringRef(Sym.Name).starts_with(".L"))) && + Sym.Binding == STB_LOCAL && Sym.getShndx() != SHN_UNDEF && + Sym.Type != STT_FILE && Sym.Type != STT_SECTION) + return true; + // We want to remove undefined symbols if all references have been + // stripped. + if (!Config.OnlySection.empty() && Sym.getShndx() == SHN_UNDEF) + return true; + } return false; };