From c2cf2c5dbe777e67d0dfc9f3130c265c81dd6198 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Tue, 2 Jul 2019 23:47:35 -0700 Subject: Wrap getenv when linking a coverage-enabled binary The wrapper to getenv() appends the effective userid (euid) of the current process to GCOV_PREFIX. This avoids conflicts and permissions issues when multiple processes try to create/access the same directories and files under /data/misc/trace. Bug: 148178774 Test: Verify that coverage files are written to /data/misc/trace//proc/... instead of /data/misc/trace/proc/... Change-Id: If58081a12b2b9bc40cfcbf64c99beafe198d07af Merged-In: If58081a12b2b9bc40cfcbf64c99beafe198d07af (cherry picked from commit 100bbdc8f3458b8a48b339356130cf4165aaadea) --- cc/coverage.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cc/coverage.go b/cc/coverage.go index c189398a..0de0c1c9 100644 --- a/cc/coverage.go +++ b/cc/coverage.go @@ -116,6 +116,8 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags coverage := ctx.GetDirectDepWithTag(getProfileLibraryName(ctx), coverageDepTag).(*Module) deps.WholeStaticLibs = append(deps.WholeStaticLibs, coverage.OutputFile().Path()) + + flags.LdFlags = append(flags.LdFlags, "-Wl,--wrap,getenv") } return flags, deps -- cgit v1.2.3