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);