aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCatena cyber <35799796+catenacyber@users.noreply.github.com>2021-10-04 15:42:21 +0200
committerGitHub <noreply@github.com>2021-10-04 09:42:21 -0400
commit657d3ddf64d3f0ede552aad5c279226862a5a1f5 (patch)
tree58bfbdd3a6e5ae871e6367355562633c703a6b2b
parentc99b0107b25e217455022add1f5efc18e9057bda (diff)
downloadoss-fuzz-657d3ddf64d3f0ede552aad5c279226862a5a1f5.tar.gz
rust coverage: fix binary ids padding (#6551)
-rw-r--r--infra/base-images/base-runner/gocoverage/llvm-cov-rel/llvm-profraw-relative.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/infra/base-images/base-runner/gocoverage/llvm-cov-rel/llvm-profraw-relative.go b/infra/base-images/base-runner/gocoverage/llvm-cov-rel/llvm-profraw-relative.go
index 91556c7c8..6106e520c 100644
--- a/infra/base-images/base-runner/gocoverage/llvm-cov-rel/llvm-profraw-relative.go
+++ b/infra/base-images/base-runner/gocoverage/llvm-cov-rel/llvm-profraw-relative.go
@@ -102,6 +102,18 @@ func relativizeProfraw(data []byte, sectPrfCnts uint64, sectPrfData uint64) (err
h.NamesDelta = binary.LittleEndian.Uint64(data[72:80])
h.ValueKindLast = binary.LittleEndian.Uint64(data[80:88])
+ if h.BinaryIdsSize%8 != 0 {
+ // adds padding for binary ids
+ // cf commit b9f547e8e51182d32f1912f97a3e53f4899ea6be https://reviews.llvm.org/D110365
+ padlen := 8 - (h.BinaryIdsSize % 8)
+ data2 := make([]byte, len(data)+int(padlen))
+ copy(data2, data[0:88+h.BinaryIdsSize])
+ copy(data2[88+h.BinaryIdsSize+padlen:], data[88+h.BinaryIdsSize:])
+ data = data2
+ h.BinaryIdsSize += padlen
+ binary.LittleEndian.PutUint64(data[16:24], h.BinaryIdsSize)
+ }
+
if h.CountersDelta != sectPrfCnts-sectPrfData {
// Rust linking adds an offset ? not seen in readelf.
sectPrfData = h.CountersDelta - sectPrfCnts + sectPrfData