aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-29 18:15:41 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-29 18:15:41 +0200
commit0a971ab1d087800b55cd2bf7daed44ab323ff900 (patch)
tree7c99eeeee43642b6c4a4105f15b26ab576fb9e35 /pkg
parentb6b4ddad63ed7b7b39939079c23d708c9d45e15b (diff)
syz-manager: implement fallback coverage report
Diffstat (limited to 'pkg')
-rw-r--r--pkg/ipc/ipc.go3
-rw-r--r--pkg/signal/signal.go8
2 files changed, 10 insertions, 1 deletions
diff --git a/pkg/ipc/ipc.go b/pkg/ipc/ipc.go
index b488da277..2f7f4e928 100644
--- a/pkg/ipc/ipc.go
+++ b/pkg/ipc/ipc.go
@@ -19,6 +19,7 @@ import (
"unsafe"
"github.com/google/syzkaller/pkg/osutil"
+ "github.com/google/syzkaller/pkg/signal"
"github.com/google/syzkaller/prog"
"github.com/google/syzkaller/sys/targets"
)
@@ -333,7 +334,7 @@ func addFallbackSignal(p *prog.Prog, info []CallInfo) {
if !inf.Executed || len(inf.Signal) != 0 {
continue
}
- inf.Signal = []uint32{uint32(call.Meta.ID)<<16 | uint32(inf.Errno)&0x3ff}
+ inf.Signal = []uint32{signal.EncodeFallback(call.Meta.ID, inf.Errno)}
}
}
diff --git a/pkg/signal/signal.go b/pkg/signal/signal.go
index 20deba46a..9af1bcce1 100644
--- a/pkg/signal/signal.go
+++ b/pkg/signal/signal.go
@@ -191,3 +191,11 @@ func Minimize(corpus []Context) []interface{} {
}
return result
}
+
+func EncodeFallback(id, errno int) uint32 {
+ return uint32(id)<<16 | uint32(errno)&0x3ff
+}
+
+func DecodeFallback(s uint32) (int, int) {
+ return int(s >> 16), int(s & 0x3ff)
+}