From b2488aed098ea6a24ae930d55a405fb94bb9b249 Mon Sep 17 00:00:00 2001 From: Kabir Oberai Date: Thu, 21 Sep 2023 18:46:57 +0530 Subject: [PATCH 1/3] fix indentation # Conflicts: # Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift --- Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift index 28213b175..4dd8f0317 100644 --- a/Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift @@ -105,7 +105,9 @@ extension WindowsToolchain { commandLine.appendFlag("-fuse-ld=lld") } - try commandLine.appendLast(.ldPath, from: &parsedOptions) + if let arg = parsedOptions.getLastArgument(.ldPath)?.asSingle { + commandLine.append(.joinedOptionAndPath("--ld-path=", try VirtualPath(path: arg))) + } switch lto { case .some(.llvmThin): From a337984f260b78a2556539e4745b12992c4cc1e0 Mon Sep 17 00:00:00 2001 From: Kabir Oberai Date: Thu, 21 Sep 2023 17:19:24 +0530 Subject: [PATCH 2/3] Fix forwarding of -ld-path The Clang linker driver spells this as --ld-path so we can't forward the argument wholesale anymore, since we spell it -ld-path. (cherry picked from commit 9a357eea6edcd9ab071b2dc379eb838997084e5b) # Conflicts: # Sources/SwiftDriver/Jobs/WindowsToolchain+LinkerSupport.swift --- Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift | 4 +++- .../SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift | 4 +++- .../SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift index 7068d6e00..0fae4a264 100644 --- a/Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/DarwinToolchain+LinkerSupport.swift @@ -181,7 +181,9 @@ extension DarwinToolchain { commandLine.appendFlag("-fuse-ld=\(arg.asSingle)") } - try commandLine.appendLast(.ldPath, from: &parsedOptions) + if let arg = parsedOptions.getLastArgument(.ldPath)?.asSingle { + commandLine.append(.joinedOptionAndPath("--ld-path=", try VirtualPath(path: arg))) + } let fSystemArgs = parsedOptions.arguments(for: .F, .Fsystem) for opt in fSystemArgs { diff --git a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift index 8030f9035..7238ca7c9 100644 --- a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift @@ -101,7 +101,9 @@ extension GenericUnixToolchain { } } - try commandLine.appendLast(.ldPath, from: &parsedOptions) + if let arg = parsedOptions.getLastArgument(.ldPath)?.asSingle { + commandLine.append(.joinedOptionAndPath("--ld-path=", try VirtualPath(path: arg))) + } // Configure the toolchain. // diff --git a/Sources/SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift index 4a013a423..6474b7f14 100644 --- a/Sources/SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift @@ -43,7 +43,9 @@ extension WebAssemblyToolchain { commandLine.appendFlag("-fuse-ld=\(linkerArg)") } - try commandLine.appendLast(.ldPath, from: &parsedOptions) + if let arg = parsedOptions.getLastArgument(.ldPath)?.asSingle { + commandLine.append(.joinedOptionAndPath("--ld-path=", try VirtualPath(path: arg))) + } // Configure the toolchain. // From ccc179cb20cdd3198377c9e0955facaf8074bbe7 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 17 Oct 2023 09:48:30 +0100 Subject: [PATCH 3/3] Update SwiftDriverTests.swift Add missing `-` when forwarding as `--ld-path` --- Tests/SwiftDriverTests/SwiftDriverTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 284ddad5f..75133d6a8 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -1691,7 +1691,7 @@ final class SwiftDriverTests: XCTestCase { let cmd = linkJob.commandLine XCTAssertTrue(cmd.contains(.flag("-dynamiclib"))) XCTAssertTrue(cmd.contains(.flag("-fuse-ld=foo"))) - XCTAssertTrue(cmd.contains(.joinedOptionAndPath("-ld-path=", try VirtualPath(path: "/bar/baz")))) + XCTAssertTrue(cmd.contains(.joinedOptionAndPath("--ld-path=", try VirtualPath(path: "/bar/baz")))) XCTAssertTrue(cmd.contains(.flag("--target=x86_64-apple-macosx10.15"))) XCTAssertEqual(linkJob.outputs[0].file, try VirtualPath(path: "libTest.dylib"))