diff options
author | 2020-11-16 15:21:43 -0500 | |
---|---|---|
committer | 2020-11-17 08:08:21 -0500 | |
commit | d7ddf051d3e2353175cbdcee3f4ed03d39bde0c6 (patch) | |
tree | 0be798e5268c1af45f70eb2ea8d5873a2bfd7f58 | |
parent | af335a4694c7884bac3b1c90a935177211f4e2a1 (diff) |
rust: Fix incorrect expected gcno file for dylibs
For Rust dylibs we generate a file suffix of .dylib.so. rustc seems to
split the output filename for the gcno file at the first '.', so instead
of libfoo.dylib.gcno (which our build system expects), it produces
libfoo.gcno.
This fixes the mismatch so the build system can find the gcno file that
gets produced for Rust dylibs.
Bug: 170983066
Test: CLANG_COVERAGE=true NATIVE_COVERAGE_PATHS=external/rust/crates \
m libandroid_log_sys
Change-Id: Icba48bf10ab06c255bd17053d57feb889b1f9ee5
-rw-r--r-- | rust/builder.go | 4 | ||||
-rw-r--r-- | rust/coverage_test.go | 2 |
2 files changed, 4 insertions, 2 deletions
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") || |