@@ -230,6 +230,8 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
230
230
ArgStringList CmdArgs;
231
231
232
232
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);
233
235
234
236
// Silence warning for "clang -g foo.o -o foo"
235
237
Args.ClaimAllArgs (options::OPT_g_Group);
@@ -243,8 +245,7 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
243
245
Args.MakeArgString (" --sysroot=" + TC.getSDKLibraryRootDir ()));
244
246
245
247
// 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;
248
249
if (Args.hasFlag (options::OPT_pie, options::OPT_no_pie, PIE))
249
250
CmdArgs.push_back (" -pie" );
250
251
@@ -270,11 +271,11 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
270
271
CmdArgs.push_back (" dead-reloc-in-nonalloc=.debug_loc=0xfffffffffffffffe" );
271
272
}
272
273
273
- if (Args. hasArg (options::OPT_static) )
274
+ if (Static )
274
275
CmdArgs.push_back (" -static" );
275
276
if (Args.hasArg (options::OPT_rdynamic))
276
277
CmdArgs.push_back (" -export-dynamic" );
277
- if (Args. hasArg (options::OPT_shared) )
278
+ if (Shared )
278
279
CmdArgs.push_back (" --shared" );
279
280
280
281
assert ((Output.isFilename () || Output.isNothing ()) && " Invalid output." );
0 commit comments