diff options
author | Catena cyber <35799796+catenacyber@users.noreply.github.com> | 2021-10-04 15:42:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-04 09:42:21 -0400 |
commit | 657d3ddf64d3f0ede552aad5c279226862a5a1f5 (patch) | |
tree | 58bfbdd3a6e5ae871e6367355562633c703a6b2b | |
parent | c99b0107b25e217455022add1f5efc18e9057bda (diff) | |
download | oss-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.go | 12 |
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 |