| // Copyright 2015 syzkaller project authors. All rights reserved. |
| // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| // Package cover provides types for working with coverage information (arrays of covered PCs). |
| package cover |
| |
| type Cover map[uint32]struct{} |
| |
| func (cov *Cover) Merge(raw []uint32) { |
| c := *cov |
| if c == nil { |
| c = make(Cover) |
| *cov = c |
| } |
| for _, pc := range raw { |
| c[pc] = struct{}{} |
| } |
| } |
| |
| func (cov Cover) Serialize() []uint32 { |
| res := make([]uint32, 0, len(cov)) |
| for pc := range cov { |
| res = append(res, pc) |
| } |
| return res |
| } |
| |
| func RestorePC(pc uint32, base uint32) uint64 { |
| return uint64(base)<<32 + uint64(pc) |
| } |