From 4ca6216b7600a3187732ae6d0dc7a5ce60cd5655 Mon Sep 17 00:00:00 2001 From: Khaled Yakdan Date: Sat, 21 May 2022 12:24:13 +0200 Subject: [PATCH] cmd/link: set coverage counters as expected by the fuzz package Set _counters and _ecounters to the start and end locations of libfuzzer's 8-bit counters section --- src/cmd/link/internal/ld/data.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index 503a9cd20c..f12cb78fb8 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -1786,6 +1786,8 @@ func (state *dodataState) allocateDataSections(ctxt *Link) { sect := state.allocateNamedSectionAndAssignSyms(&Segdata, "__sancov_cntrs", sym.SLIBFUZZER_8BIT_COUNTER, sym.Sxxx, 06) ldr.SetSymSect(ldr.LookupOrCreateSym("__start___sancov_cntrs", 0), sect) ldr.SetSymSect(ldr.LookupOrCreateSym("__stop___sancov_cntrs", 0), sect) + ldr.SetSymSect(ldr.LookupOrCreateSym("internal/fuzz._counters", 0), sect) + ldr.SetSymSect(ldr.LookupOrCreateSym("internal/fuzz._ecounters", 0), sect) } if len(state.data[sym.STLSBSS]) > 0 { @@ -2679,6 +2681,8 @@ func (ctxt *Link) address() []*sym.Segment { if fuzzCounters != nil { ctxt.xdefine("__start___sancov_cntrs", sym.SLIBFUZZER_8BIT_COUNTER, int64(fuzzCounters.Vaddr)) ctxt.xdefine("__stop___sancov_cntrs", sym.SLIBFUZZER_8BIT_COUNTER, int64(fuzzCounters.Vaddr+fuzzCounters.Length)) + ctxt.xdefine("internal/fuzz._counters", sym.SLIBFUZZER_8BIT_COUNTER, int64(fuzzCounters.Vaddr)) + ctxt.xdefine("internal/fuzz._ecounters", sym.SLIBFUZZER_8BIT_COUNTER, int64(fuzzCounters.Vaddr+fuzzCounters.Length)) } if ctxt.IsSolaris() {