Add environment flag to disable gcov path config.

In some cases (sp-hals), the test process must specify a different output
directory for gcov data than a pid-based one. Add an additional
environment variable that overrides the gcov prefix configuration in
HidlInternal.

Test: run vts-hal VtsHalGraphicsMapperV2_0Target
Bug: 69316065
Change-Id: I86554430f0dc400150fb3ba03400b8a13d645e53
diff --git a/base/HidlInternal.cpp b/base/HidlInternal.cpp
index 64b4f26..6cdc24e 100644
--- a/base/HidlInternal.cpp
+++ b/base/HidlInternal.cpp
@@ -29,9 +29,10 @@
 #include <regex>
 
 extern "C" __attribute__((weak)) void __sanitizer_cov_dump();
-const char* kSysPropHalCoverage = "hal.coverage.enable";
 const char* kGcovPrefixEnvVar = "GCOV_PREFIX";
+const char* kGcovPrefixOverrideEnvVar = "GCOV_PREFIX_OVERRIDE";
 const char* kGcovPrefixPath = "/data/misc/trace/";
+const char* kSysPropHalCoverage = "hal.coverage.enable";
 #endif
 
 namespace android {
@@ -61,8 +62,11 @@
             0);
     }
     if (property_get_bool("ro.vts.coverage", false)) {
-        const std::string gcovPath = kGcovPrefixPath + std::to_string(getpid());
-        setenv(kGcovPrefixEnvVar, gcovPath.c_str(), true /* overwrite */);
+        const char* prefixOverride = getenv(kGcovPrefixOverrideEnvVar);
+        if (prefixOverride == nullptr || strcmp(prefixOverride, "true") != 0) {
+            const std::string gcovPath = kGcovPrefixPath + std::to_string(getpid());
+            setenv(kGcovPrefixEnvVar, gcovPath.c_str(), true /* overwrite */);
+        }
         ::android::add_sysprop_change_callback(
             []() {
                 const bool enableCoverage = property_get_bool(kSysPropHalCoverage, false);