diff --git a/Sources/Testing/SourceAttribution/Backtrace.swift b/Sources/Testing/SourceAttribution/Backtrace.swift index 552e16d68..e9f53816e 100644 --- a/Sources/Testing/SourceAttribution/Backtrace.swift +++ b/Sources/Testing/SourceAttribution/Backtrace.swift @@ -40,7 +40,7 @@ public struct Backtrace: Sendable { self.addresses = addresses.map { Address(UInt(bitPattern: $0)) } } -#if os(Android) && !SWT_NO_DYNAMIC_LINKING +#if compiler(<6.3) && os(Android) /// The `backtrace()` function. /// /// This function was added to Android with API level 33, which is higher than @@ -76,7 +76,13 @@ public struct Backtrace: Sendable { initializedCount = .init(clamping: backtrace(addresses.baseAddress!, .init(clamping: addresses.count))) } #elseif os(Android) -#if !SWT_NO_DYNAMIC_LINKING +#if compiler(>=6.3) + if #available(Android 33, *) { + initializedCount = addresses.withMemoryRebound(to: UnsafeMutableRawPointer.self) { addresses in + .init(clamping: backtrace(addresses.baseAddress!, .init(clamping: addresses.count))) + } + } +#else if let _backtrace { initializedCount = .init(clamping: _backtrace(addresses.baseAddress!, .init(clamping: addresses.count))) }