aboutsummaryrefslogtreecommitdiffstats
path: root/prog/rand.go
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2024-04-16 15:11:22 +0200
committerAlexander Potapenko <glider@google.com>2024-04-24 14:58:52 +0000
commita604cf376325b5f4d5ead8c2ca50da91330c72c8 (patch)
tree982e018b38bca2d41adf53df3a8b579c8aed57a6 /prog/rand.go
parent21339d7b9986698282dce93709157dc36907fbf8 (diff)
pkg/ifuzz/arm64: add arm64 support
This patch adds instruction generator for ARM64 based on the descriptions provided as part of Go's arm64asm package. It also implements support for pseudo-instructions for calling ARM64 hypercalls.
Diffstat (limited to 'prog/rand.go')
-rw-r--r--prog/rand.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/prog/rand.go b/prog/rand.go
index 0e3727c7f..6c58f7649 100644
--- a/prog/rand.go
+++ b/prog/rand.go
@@ -466,9 +466,6 @@ func (r *randGen) generateText(kind TextKind) []byte {
if cfg := createTargetIfuzzConfig(r.target); cfg != nil {
return ifuzz.Generate(cfg, r.Rand)
}
- fallthrough
- case TextArm64:
- // Just a stub, need something better.
text := make([]byte, 50)
for i := range text {
text[i] = byte(r.Intn(256))
@@ -486,8 +483,6 @@ func (r *randGen) mutateText(kind TextKind, text []byte) []byte {
if cfg := createTargetIfuzzConfig(r.target); cfg != nil {
return ifuzz.Mutate(cfg, r.Rand, text)
}
- fallthrough
- case TextArm64:
return mutateData(r, text, 40, 60)
default:
cfg := createIfuzzConfig(kind)
@@ -519,6 +514,9 @@ func createTargetIfuzzConfig(target *Target) *ifuzz.Config {
case "ppc64":
cfg.Mode = ifuzz.ModeLong64
cfg.Arch = ifuzz.ArchPowerPC
+ case "arm64":
+ cfg.Mode = ifuzz.ModeLong64
+ cfg.Arch = ifuzz.ArchArm64
default:
return nil
}
@@ -560,8 +558,11 @@ func createIfuzzConfig(kind TextKind) *ifuzz.Config {
case TextPpc64:
cfg.Mode = ifuzz.ModeLong64
cfg.Arch = ifuzz.ArchPowerPC
+ case TextArm64:
+ cfg.Mode = ifuzz.ModeLong64
+ cfg.Arch = ifuzz.ArchArm64
default:
- panic("unknown text kind")
+ panic(fmt.Sprintf("unknown text kind: %v", kind))
}
return cfg
}