aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz/ifuzz.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/ifuzz/arm64: add arm64 supportAlexander Potapenko2024-04-241-0/+2
| | | | | | 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.
* pkg/ifuzz/iset: rename ifuzzimpl to isetDmitry Vyukov2020-11-211-17/+17
| | | | | | | | | ifuzzimpl is too lenghty and too clumsy on my taste (nm/vmimpl worked better b/c it's shorter and used less). I've tried to come up with something shorter and nicer. We could use "insn" as a common name for "instruction" in ifuzz, but it's a commonly used name already so would cause lots of conflicts. "iset" is somewhat descriptive, short and nice.
* pkg/ifuzz: invert ifuzz and ifuzzimplDmitry Vyukov2020-11-211-41/+119
| | | | | | | | | ifuzzimpl imports the public interface package ifuzz and prog package needs to import ifuzzimpl (implementation guts that nobody outside of ifuzz should care about). This is not right. Invert everything so that prog package only needs to import ifuzz and ifuzz imports ifuzzimpl.
* pkg/ifuzz/powerpc: add powerpc supportAlexey Kardashevskiy2020-11-201-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | This adds KVM's syz_kvm_setup_cpu pseudo syscall. This adds placeholder for options (none implemented yet). This adds instruction generator for ifuzz; this also adds a few pseudo instructions to simulate super/hyper/ultracalls (a PPC64/pseries platform thing). The insns.go is generated from PowerISA_public.v3.0B.pdf [1] by a horrendous python3 script on top of pdftotext. The ISA covers POWER9 which is the latest available POWER CPU at the moment. The next ISA for POWER10 is quite different and we will deal with it later. The // comment after every instruction is a fixed opcode list for verification purposes. This does not define DecodeExt as there is no obvious replacement of the Intel XED library for POWERPC (gapstone-capstone, later, may be). [1] https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0 Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
* pkg/ifuzz: reorganize files to allow other architecturesAlexey Kardashevskiy2020-11-201-271/+22
| | | | | | | | | | | | | | | | | | At the moment ifuzz only generates x86 instructions. In order to support instruction fuzzing for others (ARM, POWERPC), some separation of the common and arch layers is needed. This adds 2 packages: 1. "x86" where x86 instruction generator goes to 2. "ifuzzimpl which contains some common code. The goal was to keep changes to the rand.go to the minimum. The next patch will use this when adding PPC64. This should cause no behavioural change. Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
* all: fix comments formatDmitry Vyukov2020-07-121-8/+8
| | | | | | | Fix capitalization, dots at the end and two spaces after a period. Update #1876
* gometalinter: clean up vetshadowDmitry Vyukov2018-07-311-9/+9
| | | | | | | This just cleans up existing warnings. vetshadow is not enabled yet because it crashes. Update #538
* pkg/ifuzz: move generated code to a separate packageDmitry Vyukov2018-05-071-5/+14
| | | | | | | | This helps to ignore generated code with gometalinter. There is currently no other way: https://github.com/alecthomas/gometalinter/issues/270 Update #538
* sys: support arm archDmitry Vyukov2017-08-191-1/+1
| | | | | | | Not tested, but const extraction and build works. Update #324 Update #191
* pkg/ifuzz: move from ifuzzDmitry Vyukov2017-06-031-0/+299