diff --git a/rust/builder.go b/rust/builder.go index a09b1d1ec..6079e306f 100644 --- a/rust/builder.go +++ b/rust/builder.go @@ -200,7 +200,9 @@ func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, fl profileEmitArg := strings.TrimPrefix(cc.PwdPrefix(), "PWD=") + "/" if outputFile.Ext() != "" { - gcnoFile = android.PathForModuleOut(ctx, pathtools.ReplaceExtension(outputFile.Base(), "gcno")) + // rustc seems to split the output filename at the first '.' when determining the gcno filename + // so we need to do the same here. + gcnoFile = android.PathForModuleOut(ctx, strings.Split(outputFile.Base(), ".")[0]+".gcno") rustcFlags = append(rustcFlags, "-Z profile-emit="+profileEmitArg+android.PathForModuleOut( ctx, pathtools.ReplaceExtension(outputFile.Base(), "gcda")).String()) } else { diff --git a/rust/coverage_test.go b/rust/coverage_test.go index 90155ca6e..e7f873e91 100644 --- a/rust/coverage_test.go +++ b/rust/coverage_test.go @@ -160,7 +160,7 @@ func TestCoverageZip(t *testing.T) { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", fizzZipInputs) } if !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_rlib_dylib-std_cov/librlib.gcno") || - !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_dylib_cov/libfoo.dylib.gcno") { + !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_dylib_cov/libfoo.gcno") { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", libfooZipInputs) } if !android.SuffixInList(buzzZipInputs, "android_arm64_armv8-a_cov/obj/foo.gcno") ||