[clang] [PS5][Driver] Allow `-T` to override `--default-script` (PR #116074)
Edd Dawson via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 13 08:03:56 PST 2024
https://github.com/playstation-edd created https://github.com/llvm/llvm-project/pull/116074
If a linker script is explicitly supplied, there's no benefit to supplying a default script.
SIE tracker: TOOLCHAIN-17524
>From a843f4fcd5bc0c43ad0177cb3e284efe65676138 Mon Sep 17 00:00:00 2001
From: Edd Dawson <edd.dawson at sony.com>
Date: Wed, 13 Nov 2024 15:51:48 +0000
Subject: [PATCH] [PS5][Driver] Allow `-T` to override `--default-script`
If a linker script is supplied, there's no benefit to supplying a default
script.
SIE tracker: TOOLCHAIN-17524
---
clang/lib/Driver/ToolChains/PS4CPU.cpp | 10 ++++++----
clang/test/Driver/ps5-linker.c | 7 ++++++-
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp
index df43da93d77555..03445375796533 100644
--- a/clang/lib/Driver/ToolChains/PS4CPU.cpp
+++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp
@@ -303,10 +303,12 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
// with the SDK. The scripts are inside <sdkroot>/target/lib, which is
// added as a search path elsewhere.
// "PRX" has long stood for "PlayStation Relocatable eXecutable".
- CmdArgs.push_back("--default-script");
- CmdArgs.push_back(Static ? "static.script"
- : Shared ? "prx.script"
- : "main.script");
+ if (!Args.hasArgNoClaim(options::OPT_T)) {
+ CmdArgs.push_back("--default-script");
+ CmdArgs.push_back(Static ? "static.script"
+ : Shared ? "prx.script"
+ : "main.script");
+ }
}
if (Static)
diff --git a/clang/test/Driver/ps5-linker.c b/clang/test/Driver/ps5-linker.c
index 95267942edc172..216b11a8c52d71 100644
--- a/clang/test/Driver/ps5-linker.c
+++ b/clang/test/Driver/ps5-linker.c
@@ -67,12 +67,14 @@
// CHECK-NO-EXE-NOT: "--unresolved-symbols
// CHECK-NO-EXE-NOT: "-z"
-// Test that an appropriate linker script is supplied by the driver.
+// Test that an appropriate linker script is supplied by the driver, but can
+// be overridden with -T.
// RUN: %clang --target=x86_64-sie-ps5 %s -### 2>&1 | FileCheck --check-prefixes=CHECK-SCRIPT -DSCRIPT=main %s
// RUN: %clang --target=x86_64-sie-ps5 %s -shared -### 2>&1 | FileCheck --check-prefixes=CHECK-SCRIPT -DSCRIPT=prx %s
// RUN: %clang --target=x86_64-sie-ps5 %s -static -### 2>&1 | FileCheck --check-prefixes=CHECK-SCRIPT -DSCRIPT=static %s
// RUN: %clang --target=x86_64-sie-ps5 %s -r -### 2>&1 | FileCheck --check-prefixes=CHECK-NO-SCRIPT %s
+// RUN: %clang --target=x86_64-sie-ps5 %s -T custom.script -### 2>&1 | FileCheck --check-prefixes=CHECK-CUSTOM-SCRIPT --implicit-check-not "\"{{-T|--script|--default-script}}\"" %s
// CHECK-SCRIPT: {{ld(\.exe)?}}"
// CHECK-SCRIPT-SAME: "--default-script" "[[SCRIPT]].script"
@@ -80,6 +82,9 @@
// CHECK-NO-SCRIPT: {{ld(\.exe)?}}"
// CHECK-NO-SCRIPT-NOT: "--default-script"
+// CHECK-CUSTOM-SCRIPT: {{ld(\.exe)?}}"
+// CHECK-CUSTOM-SCRIPT-SAME: "-T" "custom.script"
+
// Test that -static is forwarded to the linker
// RUN: %clang --target=x86_64-sie-ps5 -static %s -### 2>&1 | FileCheck --check-prefixes=CHECK-STATIC %s
More information about the cfe-commits
mailing list