diff --git a/apps/macos/Tests/ClawdisIPCTests/CoverageDumpTests.swift b/apps/macos/Tests/ClawdisIPCTests/CoverageDumpTests.swift index 917a786d3d..278477448b 100644 --- a/apps/macos/Tests/ClawdisIPCTests/CoverageDumpTests.swift +++ b/apps/macos/Tests/ClawdisIPCTests/CoverageDumpTests.swift @@ -6,13 +6,19 @@ import Testing struct CoverageDumpTests { @Test func periodicallyFlushCoverage() async { guard ProcessInfo.processInfo.environment["LLVM_PROFILE_FILE"] != nil else { return } + guard let writeProfile = resolveProfileWriteFile() else { return } let deadline = Date().addingTimeInterval(4) while Date() < deadline { - _ = llvmProfileWriteFile() + _ = writeProfile() try? await Task.sleep(nanoseconds: 250_000_000) } } } -@_silgen_name("__llvm_profile_write_file") -private func llvmProfileWriteFile() -> Int32 +private typealias ProfileWriteFn = @convention(c) () -> Int32 + +private func resolveProfileWriteFile() -> ProfileWriteFn? { + let symbol = dlsym(UnsafeMutableRawPointer(bitPattern: -2), "__llvm_profile_write_file") + guard let symbol else { return nil } + return unsafeBitCast(symbol, to: ProfileWriteFn.self) +}