@@ -1906,6 +1906,29 @@ final class SwiftDriverTests: XCTestCase {
19061906 XCTAssertTrue ( cmd. contains ( subsequence: [ . flag( " -Xlinker " ) , . flag( " -rpath=$ORIGIN " ) , . flag( " foo " ) ] ) )
19071907 }
19081908
1909+ do {
1910+ // Xlinker flags
1911+ // Ensure that Xlinker flags are passed as such to the clang linker invocation.
1912+ try withTemporaryDirectory { path in
1913+ try localFileSystem. writeFileContents ( path. appending ( components: " wasi " , " static-executable-args.lnk " ) ) {
1914+ $0. send ( " garbage " )
1915+ }
1916+ var driver = try Driver ( args: commonArgs + [ " -emit-executable " , " -L " , " /tmp " , " -Xlinker " , " --export-all " ,
1917+ " -Xlinker " , " -E " , " -Xclang-linker " , " foo " ,
1918+ " -resource-dir " , path. pathString,
1919+ " -target " , " wasm32-unknown-wasi " ] , env: env)
1920+ let plannedJobs = try driver. planBuild ( )
1921+ XCTAssertEqual ( plannedJobs. count, 4 )
1922+ let linkJob = plannedJobs [ 3 ]
1923+ let cmd = linkJob. commandLine
1924+ XCTAssertTrue ( cmd. contains ( subsequence: [
1925+ . flag( " -Xlinker " ) , . flag( " --export-all " ) ,
1926+ . flag( " -Xlinker " ) , . flag( " -E " ) ,
1927+ . flag( " foo " )
1928+ ] ) )
1929+ }
1930+ }
1931+
19091932 do {
19101933 var driver = try Driver ( args: commonArgs + [ " -emit-library " , " -no-toolchain-stdlib-rpath " ,
19111934 " -target " , " aarch64-unknown-linux " ] , env: env)
0 commit comments