Skip to content

Commit 3e88c1c

Browse files
committed
Bump the DWARF version number to 5 on Darwin.
The default debug info format for newer versions of Darwin is DWARF 5. https://developer.apple.com/documentation/xcode-release-notes/xcode-16-release-notes rdar://110925733 (cherry picked from commit 1a06ddc)
1 parent 9ce382d commit 3e88c1c

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

lib/Driver/DarwinToolChains.cpp

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -659,23 +659,40 @@ toolchains::Darwin::addDeploymentTargetArgs(ArgStringList &Arguments,
659659
static unsigned getDWARFVersionForTriple(const llvm::Triple &triple) {
660660
llvm::VersionTuple osVersion;
661661
const DarwinPlatformKind kind = getDarwinPlatformKind(triple);
662+
// Default to DWARF 2 on OS X 10.10 / iOS 8 and lower.
663+
// Default to DWARF 4 on OS X 10.11 - macOS 14 / iOS - iOS 17.
662664
switch (kind) {
663665
case DarwinPlatformKind::MacOS:
664666
triple.getMacOSXVersion(osVersion);
665667
if (osVersion < llvm::VersionTuple(10, 11))
666668
return 2;
667-
return 4;
669+
if (osVersion < llvm::VersionTuple(15))
670+
return 4;
671+
return 5;
668672
case DarwinPlatformKind::IPhoneOSSimulator:
669673
case DarwinPlatformKind::IPhoneOS:
670674
case DarwinPlatformKind::TvOS:
671675
case DarwinPlatformKind::TvOSSimulator:
672676
osVersion = triple.getiOSVersion();
673-
if (osVersion < llvm::VersionTuple(9))
674-
return 2;
675-
return 4;
676-
default:
677-
return 4;
677+
if (osVersion < llvm::VersionTuple(9))
678+
return 2;
679+
if (osVersion < llvm::VersionTuple(18))
680+
return 4;
681+
return 5;
682+
case DarwinPlatformKind::WatchOS:
683+
case DarwinPlatformKind::WatchOSSimulator:
684+
osVersion = triple.getWatchOSVersion();
685+
if (osVersion < llvm::VersionTuple(11))
686+
return 4;
687+
return 5;
688+
case DarwinPlatformKind::VisionOS:
689+
case DarwinPlatformKind::VisionOSSimulator:
690+
osVersion = triple.getOSVersion();
691+
if (osVersion < llvm::VersionTuple(2))
692+
return 4;
693+
return 5;
678694
}
695+
llvm_unreachable("unsupported platform kind");
679696
}
680697

681698
void toolchains::Darwin::addCommonFrontendArgs(

test/Driver/options.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
// MISSING_OPTION_G_ERROR: error: option '-debug-info-format={{.*}}' is missing a required argument (-g)
110110

111111
// RUN: %swift_driver -### -g -dwarf-version=3 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_3 %s
112+
// DWARF_VERSION_5: -dwarf-version=5
112113
// DWARF_VERSION_4: -dwarf-version=4
113114
// DWARF_VERSION_3: -dwarf-version=3
114115
// DWARF_VERSION_2: -dwarf-version=2
@@ -135,6 +136,17 @@
135136
// RUN: %swift_driver -### -g -target arm64_32-apple-watchos10.0 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_4 %s
136137
// RUN: %swiftc_driver -### -g -target arm64_32-apple-watchos10.0 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_4 %s
137138

139+
// RUN: %swift_driver -### -g -target x86_64-apple-macosx15 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
140+
// RUN: %swiftc_driver -### -g -target x86_64-apple-macosx15 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
141+
// RUN: %swift_driver -### -g -target arm64-apple-ios18.0 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
142+
// RUN: %swiftc_driver -### -g -target arm64-apple-ios18.0 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
143+
// RUN: %swift_driver -### -g -target arm64-apple-ios18.0-macabi %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
144+
// RUN: %swiftc_driver -### -g -target arm64-apple-ios18.0-macabi %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
145+
// RUN: %swift_driver -### -g -target arm64-apple-tvos18 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
146+
// RUN: %swiftc_driver -### -g -target arm64-apple-tvos18 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
147+
// RUN: %swift_driver -### -g -target arm64_32-apple-watchos11 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
148+
// RUN: %swiftc_driver -### -g -target arm64_32-apple-watchos11 %s 2>&1 | %FileCheck -check-prefix DWARF_VERSION_5 %s
149+
138150
// RUN: not %swift_driver -gline-tables-only -debug-info-format=codeview %s 2>&1 | %FileCheck -check-prefix BAD_DEBUG_LEVEL_ERROR %s
139151
// RUN: not %swift_driver -gdwarf-types -debug-info-format=codeview %s 2>&1 | %FileCheck -check-prefix BAD_DEBUG_LEVEL_ERROR %s
140152
// RUN: not %swiftc_driver -gline-tables-only -debug-info-format=codeview %s 2>&1 | %FileCheck -check-prefix BAD_DEBUG_LEVEL_ERROR %s

0 commit comments

Comments
 (0)