forces as-needed regardless of ldflags From f59f126a9344f265e3766003766d7a66b6a638e3 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Sun, 23 Oct 2022 01:26:37 +0200 Subject: [PATCH 3/4] clang: use --as-needed by default --- clang/lib/Driver/ToolChains/Gnu.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index f203cae1d..9e181a79a 100644 --- a/lib/Driver/ToolChains/Gnu.cpp +++ b/lib/Driver/ToolChains/Gnu.cpp @@ -560,6 +560,13 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs); addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs); + + // Use --as-needed by default for all explicit linker inputs on Linux + // We don't reset it afterwards because explicit argument does not + // get reset either (and that is permitted, so it should be fine) + if (Triple.isOSLinux()) + CmdArgs.push_back("--as-needed"); + AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); addHIPRuntimeLibArgs(ToolChain, Args, CmdArgs); -- 2.38.0