Author: Brad Smith Date: 2022-04-28T00:19:45-04:00 New Revision: 3d7da810e4a6e1ade2c0d649f17f8aa820248765
URL: https://github.com/llvm/llvm-project/commit/3d7da810e4a6e1ade2c0d649f17f8aa820248765 DIFF: https://github.com/llvm/llvm-project/commit/3d7da810e4a6e1ade2c0d649f17f8aa820248765.diff LOG: [Driver][Solaris] -r: imply -nostdlib like GCC Similar to D116843 for Gnu.cpp Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D124356 Added: Modified: clang/lib/Driver/ToolChains/Solaris.cpp clang/test/Driver/solaris-ld.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Solaris.cpp b/clang/lib/Driver/ToolChains/Solaris.cpp index 2d40598bfc1c0..c75375ac95f7b 100644 --- a/clang/lib/Driver/ToolChains/Solaris.cpp +++ b/clang/lib/Driver/ToolChains/Solaris.cpp @@ -84,7 +84,8 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA, assert(Output.isNothing() && "Invalid output."); } - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, + options::OPT_r)) { if (!Args.hasArg(options::OPT_shared)) CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crt1.o"))); @@ -124,7 +125,8 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA, bool NeedsSanitizerDeps = addSanitizerRuntimes(getToolChain(), Args, CmdArgs); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA); - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs, + options::OPT_r)) { if (getToolChain().ShouldLinkCXXStdlib(Args)) getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); if (Args.hasArg(options::OPT_fstack_protector) || @@ -161,11 +163,13 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA, } } - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, + options::OPT_r)) { CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); + CmdArgs.push_back( + Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); } - CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); getToolChain().addProfileRTLibs(Args, CmdArgs); diff --git a/clang/test/Driver/solaris-ld.c b/clang/test/Driver/solaris-ld.c index d40e5dac2da9e..57b2b1ba159b0 100644 --- a/clang/test/Driver/solaris-ld.c +++ b/clang/test/Driver/solaris-ld.c @@ -108,3 +108,13 @@ // CHECK-SPARC32-SHARED-SAME: "-lc" // CHECK-SPARC32-SHARED-NOT: "-lgcc" // CHECK-SPARC32-SHARED-NOT: "-lm" + +// -r suppresses default -l and crt*.o, values-*.o like -nostdlib. +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o \ +// RUN: --target=sparc-sun-solaris2.11 -r 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-RELOCATABLE +// CHECK-RELOCATABLE: "-L +// CHECK-RELOCATABLE: "-r" +// CHECK-RELOCATABLE-NOT: "-l +// CHECK-RELOCATABLE-NOT: {{.*}}crt{{[^.]+}}.o +// CHECK-RELOCATABLE-NOT: {{.*}}values-{{[^.]+}}.o _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits