From db751dbf7f7bd1407bd6ef944fb020c036fadba4 Mon Sep 17 00:00:00 2001 From: Finagolfin Date: Mon, 26 Aug 2024 12:51:32 +0530 Subject: [PATCH] Android: add the right suffix for the compiler-rt profiler library --- .../Jobs/GenericUnixToolchain+LinkerSupport.swift | 3 ++- Tests/SwiftDriverTests/SwiftDriverTests.swift | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift index 4b4a1bd3f..a774bd52a 100644 --- a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift @@ -285,9 +285,10 @@ extension GenericUnixToolchain { } if parsedOptions.hasArgument(.profileGenerate) { + let environment = (targetTriple.environment == .android) ? "-android" : "" let libProfile = VirtualPath.lookup(targetInfo.runtimeResourcePath.path) .appending(components: "clang", "lib", targetTriple.osName, - "libclang_rt.profile-\(targetTriple.archName).a") + "libclang_rt.profile-\(targetTriple.archName)\(environment).a") commandLine.appendPath(libProfile) // HACK: Hard-coded from llvm::getInstrProfRuntimeHookVarName() diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 8ed6e93ac..130c8534d 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -4416,15 +4416,19 @@ final class SwiftDriverTests: XCTestCase { // FIXME: This will fail when run on macOS, because // swift-autolink-extract is not present #if os(Linux) || os(Android) || os(Windows) - do { - var driver = try Driver(args: ["swiftc", "-profile-generate", "-target", "x86_64-unknown-linux-gnu", "test.swift"]) + for triple in ["aarch64-unknown-linux-android", "x86_64-unknown-linux-gnu"] { + var driver = try Driver(args: ["swiftc", "-profile-generate", "-target", triple, "test.swift"]) let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs() XCTAssertEqual(plannedJobs.count, 2) XCTAssertEqual(plannedJobs[0].kind, .compile) XCTAssertEqual(plannedJobs[1].kind, .link) - XCTAssert(plannedJobs[1].commandLine.containsPathWithBasename("libclang_rt.profile-x86_64.a")) + if triple == "aarch64-unknown-linux-android" { + XCTAssert(plannedJobs[1].commandLine.containsPathWithBasename("libclang_rt.profile-aarch64-android.a")) + } else { + XCTAssert(plannedJobs[1].commandLine.containsPathWithBasename("libclang_rt.profile-x86_64.a")) + } XCTAssert(plannedJobs[1].commandLine.contains { $0 == .flag("-u__llvm_profile_runtime") }) } #endif