Skip to content

Commit 5e9abc0

Browse files
Merge pull request #1630 from apple/PR-darwin-dwarf5
Bump the DWARF version number to 5 on Darwin.
2 parents dd93a2c + c5ad78c commit 5e9abc0

File tree

2 files changed

+44
-11
lines changed

2 files changed

+44
-11
lines changed

Sources/SwiftDriver/Toolchains/DarwinToolchain.swift

+15-2
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,25 @@ public final class DarwinToolchain: Toolchain {
220220
}
221221

222222
public func getDefaultDwarfVersion(targetTriple: Triple) -> UInt8 {
223-
if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(10, 11, 0)) ||
223+
// Default to DWARF 2 on OS X 10.10 / iOS 8 and lower.
224+
// Default to DWARF 4 on OS X 10.11 - macOS 14 / iOS - iOS 17.
225+
if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(10, 11, 0)) ||
224226
(targetTriple.isiOS && targetTriple.version(
225227
for: .iOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(9, 0, 0)) {
226228
return 2;
227229
}
228-
return 4
230+
if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(15, 0, 0)) ||
231+
(targetTriple.isiOS && targetTriple.version(
232+
for: .iOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(18, 0, 0)) ||
233+
(targetTriple.isTvOS && targetTriple.version(
234+
for: .tvOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(18, 0, 0)) ||
235+
(targetTriple.isWatchOS && targetTriple.version(
236+
for: .watchOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(11, 0, 0)) ||
237+
(targetTriple.isVisionOS && targetTriple.version(
238+
for: .visionOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(2, 0, 0)){
239+
return 4
240+
}
241+
return 5
229242
}
230243

231244
func validateDeploymentTarget(_ parsedOptions: inout ParsedOptions,

Tests/SwiftDriverTests/SwiftDriverTests.swift

+29-9
Original file line numberDiff line numberDiff line change
@@ -669,15 +669,35 @@ final class SwiftDriverTests: XCTestCase {
669669
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4")))
670670
}
671671

672-
// TODO: Enable once compiler support lands
673-
// try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0-simulator") { driver in
674-
// let jobs = try driver.planBuild()
675-
// XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4")))
676-
// }
677-
// try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0") { driver in
678-
// let jobs = try driver.planBuild()
679-
// XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4")))
680-
// }
672+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "x86_64-apple-macosx15") { driver in
673+
let jobs = try driver.planBuild()
674+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5")))
675+
}
676+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-ios18.0") { driver in
677+
let jobs = try driver.planBuild()
678+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5")))
679+
}
680+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64_32-apple-watchos11") { driver in
681+
let jobs = try driver.planBuild()
682+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5")))
683+
}
684+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-tvos18") { driver in
685+
let jobs = try driver.planBuild()
686+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5")))
687+
}
688+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0-simulator") { driver in
689+
let jobs = try driver.planBuild()
690+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4")))
691+
}
692+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros2.0") { driver in
693+
let jobs = try driver.planBuild()
694+
XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5")))
695+
}
696+
697+
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-c", "-file-compilation-dir", ".") { driver in
698+
let jobs = try driver.planBuild()
699+
XCTAssertFalse(jobs[0].commandLine.contains(.flag("-file-compilation-dir")))
700+
}
681701
}
682702

683703
func testCoverageSettings() throws {

0 commit comments

Comments
 (0)