From nobody Tue Oct 07 18:17:33 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 4ch49p19pcz6Bl4b; Tue, 07 Oct 2025 18:17:34 +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 4ch49n6Br2z3sm1; Tue, 07 Oct 2025 18:17:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759861053; 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=mU5KEcGmnFRQ+Cwfimywhc9mvLll0Mp/JnYXdrAbv9Y=; b=QiON2rALAoJGpEIHDYzLNzEXzkEEuO4OqPPXFS7DzkCo/gUY34yQnVMYqdoF7pqsF/sfb/ /wz/imID7WEYFhRmWDMMrwYhlcsEwbplRcN/XNt3OGG0QPDTwvay0TZJtXkhGV0NfKIUEX 3UU5NwqNgAuYv2soE9arRi/5QjQhTp2dEDmuFyGwWjlhRnDx/uuYvSbgHJ1md+1QFbm38u 0NLG6REtmx0p2SL96qcGGlthNxXTuXC9n1N8X4jJaTee8RYWyBA3xSFYLpX8QNNue/Vzqb 7w9SyI/zFPQD5Y9qrzkkC4i/b+c+r7iGLExhC6S/psPWxn+XD58ZWY2CdUAGQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1759861053; 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=mU5KEcGmnFRQ+Cwfimywhc9mvLll0Mp/JnYXdrAbv9Y=; b=JUjJ+ZqwRHeyu0AIaTGeS2wLsNOABWxTZ3ASa0FzHHB825aLPWOCGfBmRdoydTBbU0o40K q+nVxllO8jhUiWxZWxyDOmFoAuELSDDLh90MbNOebvMeAMDDGr508i1M1sdXqrO5tTqohQ xX9hBMtp3Gu7Wi9WA63aLOoY7eIyC3E0mpNEAmUHtZSQqoFm/1YKnVjuPshT7P+EhN+I7h 6OCld5kFHe7vI+3FltyP9618L5NMeoEkL/tZUbvttMZ4ggLvr53D1NtRAd92btRy6YDHsC Ji8b+wAPkxAy9TlQRpQmYOYn1s27RRO2GXRmOfEyJXN/yUqHl8XL4DeCExaJxw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1759861053; a=rsa-sha256; cv=none; b=GtGxvZd1opR75juEb5Clx60EZ3+bp4qx+hYrlIFE97BTIQuIOolrlAP69V0IKDdZar1CS3 NM4/veFUkUxJ9fOHAiE159GwldFcd0dVw1s5ne4xJmMtIew6vd9BPsX1lOPfEjBC7ViTuQ IrbioMG9VDmdjdHBexpUijMiI8KQxsvFnD8CgdVyOLR2Sn+dfAmM6oFhxncVERxpC/+BkL jcKXdvyq70Z9Kvw6DFCwVUkikvFlLZpE6LYEjCa214IjTOnFyNYvfqxqG5+BL0sFgd9bRE uUAeZDqI0PMRVs0SvUp+6GHnZ3bwP48f7g6wQp5tMHDRcBmwJety67YKcJfSxg== 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 4ch49n5k3yzwV4; Tue, 07 Oct 2025 18:17:33 +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 597IHXl9085433; Tue, 7 Oct 2025 18:17:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 597IHX4E085430; Tue, 7 Oct 2025 18:17:33 GMT (envelope-from git) Date: Tue, 7 Oct 2025 18:17:33 GMT Message-Id: <202510071817.597IHX4E085430@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: e01971362fe6 - stable/13 - Merge commit 7a66a26658f4 from llvm git (by Fangrui Song): 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: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e01971362fe639e079ffc0a828b10aff1cc2a726 Auto-Submitted: auto-generated The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=e01971362fe639e079ffc0a828b10aff1cc2a726 commit e01971362fe639e079ffc0a828b10aff1cc2a726 Author: Ed Maste AuthorDate: 2025-08-28 12:48:17 +0000 Commit: Ed Maste CommitDate: 2025-10-07 18:16:44 +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 (cherry picked from commit 959806e0a8448ef5df372468b8deddc20d976702) (cherry picked from commit 4558fc4f91dc1d3909083ea664b384595f66c3ae) --- .../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; };