@@ -1906,6 +1906,29 @@ final class SwiftDriverTests: XCTestCase {
1906
1906
XCTAssertTrue ( cmd. contains ( subsequence: [ . flag( " -Xlinker " ) , . flag( " -rpath=$ORIGIN " ) , . flag( " foo " ) ] ) )
1907
1907
}
1908
1908
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
+
1909
1932
do {
1910
1933
var driver = try Driver ( args: commonArgs + [ " -emit-library " , " -no-toolchain-stdlib-rpath " ,
1911
1934
" -target " , " aarch64-unknown-linux " ] , env: env)
0 commit comments