@@ -230,6 +230,8 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
230230 ArgStringList CmdArgs;
231231
232232 const bool Relocatable = Args.hasArg (options::OPT_r);
233+ const bool Shared = Args.hasArg (options::OPT_shared);
234+ const bool Static = Args.hasArg (options::OPT_static);
233235
234236 // Silence warning for "clang -g foo.o -o foo"
235237 Args.ClaimAllArgs (options::OPT_g_Group);
@@ -243,8 +245,7 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
243245 Args.MakeArgString (" --sysroot=" + TC.getSDKLibraryRootDir ()));
244246
245247 // Default to PIE for non-static executables.
246- const bool PIE =
247- !Args.hasArg (options::OPT_r, options::OPT_shared, options::OPT_static);
248+ const bool PIE = !Relocatable && !Shared && !Static;
248249 if (Args.hasFlag (options::OPT_pie, options::OPT_no_pie, PIE))
249250 CmdArgs.push_back (" -pie" );
250251
@@ -270,11 +271,11 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
270271 CmdArgs.push_back (" dead-reloc-in-nonalloc=.debug_loc=0xfffffffffffffffe" );
271272 }
272273
273- if (Args. hasArg (options::OPT_static) )
274+ if (Static )
274275 CmdArgs.push_back (" -static" );
275276 if (Args.hasArg (options::OPT_rdynamic))
276277 CmdArgs.push_back (" -export-dynamic" );
277- if (Args. hasArg (options::OPT_shared) )
278+ if (Shared )
278279 CmdArgs.push_back (" --shared" );
279280
280281 assert ((Output.isFilename () || Output.isNothing ()) && " Invalid output." );
0 commit comments