https://github.com/playstation-edd updated https://github.com/llvm/llvm-project/pull/119875
>From a089ea0865504e39fd93320504c6572c04be2b19 Mon Sep 17 00:00:00 2001 From: Edd Dawson <edd.daw...@sony.com> Date: Fri, 13 Dec 2024 12:45:45 +0000 Subject: [PATCH 1/2] [PS5][Driver] Pass user search paths to linker before implict ones Responsibility for setting up implicit library search paths was recently transferred to the PS5 driver (llvm#109796). Prior to this, SIE private patches in lld performed this function. During the transition, I failed to maintain the order in which implicit and user-supplied search paths were supplied/considered. This change ensures user-supplied search paths appear before any implicit ones on the link line. SIE tracker: TOOLCHAIN-17490 --- clang/lib/Driver/ToolChains/PS4CPU.cpp | 5 +++-- clang/test/Driver/ps5-linker.c | 26 ++++++++++++-------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index c2eeb8f513066f..b59c89f107d816 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -361,9 +361,10 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (StringRef Jobs = getLTOParallelism(Args, D); !Jobs.empty()) AddLTOFlag(Twine("jobs=") + Jobs); + Args.AddAllArgs(CmdArgs, options::OPT_L); TC.AddFilePathLibArgs(Args, CmdArgs); - Args.addAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, - options::OPT_s, options::OPT_t}); + Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s, + options::OPT_t}); if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) CmdArgs.push_back("--no-demangle"); diff --git a/clang/test/Driver/ps5-linker.c b/clang/test/Driver/ps5-linker.c index 62aa3a40e455af..53f89a914f4fae 100644 --- a/clang/test/Driver/ps5-linker.c +++ b/clang/test/Driver/ps5-linker.c @@ -172,29 +172,27 @@ // CHECK-SYSROOT: {{ld(\.exe)?}}" // CHECK-SYSROOT-SAME: "--sysroot=mysdk" -// Test that "." is always added to library search paths. This is long-standing -// behavior, unique to PlayStation toolchains. - -// RUN: %clang --target=x64_64-sie-ps5 %s -### 2>&1 | FileCheck --check-prefixes=CHECK-LDOT %s - -// CHECK-LDOT: {{ld(\.exe)?}}" -// CHECK-LDOT-SAME: "-L." - -// Test that <sdk-root>/target/lib is added to library search paths, if it -// exists and no --sysroot is specified. Also confirm that CRT objects are -// found there. +// Test implicit library search paths are supplied to the linker, after any +// search paths specified by the user. <sdk-root>/target/lib is implicitly +// added if it exists and no --sysroot is specified. CRT objects are found +// there. "." is always implicitly added to library search paths. This is +// long-standing behavior, unique to PlayStation toolchains. // RUN: rm -rf %t.dir && mkdir %t.dir -// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### 2>&1 | FileCheck --check-prefixes=CHECK-NO-TARGETLIB %s -// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### --sysroot=%t.dir 2>&1 | FileCheck --check-prefixes=CHECK-NO-TARGETLIB %s +// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### -Luser 2>&1 | FileCheck --check-prefixes=CHECK-NO-TARGETLIB %s +// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### -Luser --sysroot=%t.dir 2>&1 | FileCheck --check-prefixes=CHECK-NO-TARGETLIB %s // CHECK-NO-TARGETLIB: {{ld(\.exe)?}}" +// CHECK-NO-TARGETLIB-SAME: "-Luser" // CHECK-NO-TARGETLIB-NOT: "-L{{.*[/\\]}}target/lib" +// CHECK-NO-TARGETLIB-SAME: "-L." // RUN: mkdir -p %t.dir/target/lib // RUN: touch %t.dir/target/lib/crti.o -// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### 2>&1 | FileCheck --check-prefixes=CHECK-TARGETLIB %s +// RUN: env SCE_PROSPERO_SDK_DIR=%t.dir %clang --target=x64_64-sie-ps5 %s -### -Luser 2>&1 | FileCheck --check-prefixes=CHECK-TARGETLIB %s // CHECK-TARGETLIB: {{ld(\.exe)?}}" +// CHECK-TARGETLIB-SAME: "-Luser" // CHECK-TARGETLIB-SAME: "-L{{.*[/\\]}}target/lib" +// CHECK-TARGETLIB-SAME: "-L." // CHECK-TARGETLIB-SAME: "{{.*[/\\]}}target{{/|\\\\}}lib{{/|\\\\}}crti.o" >From 39a8a67a4a8711703a2275b3383c16b8bd60bf5a Mon Sep 17 00:00:00 2001 From: Edd Dawson <edd.daw...@sony.com> Date: Fri, 13 Dec 2024 13:10:43 +0000 Subject: [PATCH 2/2] clang-format --- clang/lib/Driver/ToolChains/PS4CPU.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index b59c89f107d816..fd4c2f9bf68cd6 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -363,8 +363,8 @@ void tools::PS5cpu::Linker::ConstructJob(Compilation &C, const JobAction &JA, Args.AddAllArgs(CmdArgs, options::OPT_L); TC.AddFilePathLibArgs(Args, CmdArgs); - Args.addAllArgs(CmdArgs, {options::OPT_T_Group, options::OPT_s, - options::OPT_t}); + Args.addAllArgs(CmdArgs, + {options::OPT_T_Group, options::OPT_s, options::OPT_t}); if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) CmdArgs.push_back("--no-demangle"); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits