Skip to content

Commit cda300e

Browse files
brad0tstellar
authored andcommitted
[Driver][Solaris] -r: imply -nostdlib like GCC
Similar to D116843 for Gnu.cpp Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D124356 (cherry picked from commit 3d7da81)
1 parent 9827a18 commit cda300e

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

clang/lib/Driver/ToolChains/Solaris.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
8282
assert(Output.isNothing() && "Invalid output.");
8383
}
8484

85-
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
85+
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
86+
options::OPT_r)) {
8687
if (!Args.hasArg(options::OPT_shared))
8788
CmdArgs.push_back(
8889
Args.MakeArgString(getToolChain().GetFilePath("crt1.o")));
@@ -122,7 +123,8 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
122123
bool NeedsSanitizerDeps = addSanitizerRuntimes(getToolChain(), Args, CmdArgs);
123124
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs, JA);
124125

125-
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
126+
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
127+
options::OPT_r)) {
126128
if (getToolChain().ShouldLinkCXXStdlib(Args))
127129
getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
128130
if (Args.hasArg(options::OPT_fstack_protector) ||
@@ -149,11 +151,13 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
149151
linkSanitizerRuntimeDeps(getToolChain(), CmdArgs);
150152
}
151153

152-
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
154+
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
155+
options::OPT_r)) {
153156
CmdArgs.push_back(
154157
Args.MakeArgString(getToolChain().GetFilePath("crtend.o")));
158+
CmdArgs.push_back(
159+
Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
155160
}
156-
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
157161

158162
getToolChain().addProfileRTLibs(Args, CmdArgs);
159163

clang/test/Driver/solaris-ld.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,13 @@
108108
// CHECK-SPARC32-SHARED-SAME: "-lc"
109109
// CHECK-SPARC32-SHARED-NOT: "-lgcc"
110110
// CHECK-SPARC32-SHARED-NOT: "-lm"
111+
112+
// -r suppresses default -l and crt*.o, values-*.o like -nostdlib.
113+
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o \
114+
// RUN: --target=sparc-sun-solaris2.11 -r 2>&1 \
115+
// RUN: | FileCheck %s --check-prefix=CHECK-RELOCATABLE
116+
// CHECK-RELOCATABLE: "-L
117+
// CHECK-RELOCATABLE: "-r"
118+
// CHECK-RELOCATABLE-NOT: "-l
119+
// CHECK-RELOCATABLE-NOT: {{.*}}crt{{[^.]+}}.o
120+
// CHECK-RELOCATABLE-NOT: {{.*}}values-{{[^.]+}}.o

0 commit comments

Comments
 (0)