Imports #
"bytes"
"fmt"
"go/ast"
"go/build"
"go/token"
"go/types"
"log"
"regexp"
"strconv"
"strings"
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
"bytes"
"fmt"
"go/ast"
"go/build"
"go/token"
"go/types"
"log"
"regexp"
"strconv"
"strings"
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
var Analyzer = *ast.UnaryExpr
const Doc = "report mismatches between assembly files and Go declarations"
var abiSuff = *ast.CallExpr
var arches = []*asmArch{...}
var asmArch386 = asmArch{...}
var asmArchAmd64 = asmArch{...}
var asmArchArm = asmArch{...}
var asmArchArm64 = asmArch{...}
var asmArchLoong64 = asmArch{...}
var asmArchMips = asmArch{...}
var asmArchMips64 = asmArch{...}
var asmArchMips64LE = asmArch{...}
var asmArchMipsLE = asmArch{...}
var asmArchPpc64 = asmArch{...}
var asmArchPpc64LE = asmArch{...}
var asmArchRISCV64 = asmArch{...}
var asmArchS390X = asmArch{...}
var asmArchWasm = asmArch{...}
These special kinds are not valid sizes.
const asmArray
These special kinds are not valid sizes.
const asmComplex
var asmDATA = *ast.CallExpr
These special kinds are not valid sizes.
const asmEmptyInterface
These special kinds are not valid sizes.
const asmInterface
var asmNamedFP = *ast.CallExpr
var asmOpcode = *ast.CallExpr
var asmPlusBuild = *ast.CallExpr
var asmSP = *ast.CallExpr
These special kinds are not valid sizes.
const asmSlice
These special kinds are not valid sizes.
const asmString asmKind = *ast.BinaryExpr
These special kinds are not valid sizes.
const asmStruct
var asmTEXT = *ast.CallExpr
var asmUnnamedFP = *ast.CallExpr
var ppc64Suff = *ast.CallExpr
var re = regexp.MustCompile
'kind' is a kind of assembly variable. The kinds 1, 2, 4, 8 stand for values of that size.
type asmKind int
An asmArch describes assembly parameters for an architecture
type asmArch struct {
name string
bigEndian bool
stack string
lr bool
retRegs []string
writeResult []string
sizes types.Sizes
intSize int
ptrSize int
maxAlign int
}
An asmFunc describes the expected variables for a function on a given architecture.
type asmFunc struct {
arch *asmArch
size int
vars map[string]*asmVar
varByOffset map[int]*asmVar
}
An asmVar describes a single assembly variable.
type asmVar struct {
name string
kind asmKind
typ string
off int
size int
inner []*asmVar
}
A component is an assembly-addressable component of a composite type, or a composite type itself.
type component struct {
size int
offset int
kind asmKind
typ string
suffix string
outer string
}
appendComponentsRecursive implements componentsOfType. Recursion is required to correct handle structs and arrays, which can contain arbitrary other types.
func appendComponentsRecursive(arch *asmArch, t types.Type, cc []component, suffix string, off int) []component
asmCheckVar checks a single variable reference.
func asmCheckVar(badf func(string, ...interface{}), fn *asmFunc, line string, expr string, off int, v *asmVar, archDef *asmArch)
func asmKindForType(t types.Type, size int) asmKind
asmParseDecl parses a function decl for expected assembly variables.
func asmParseDecl(pass *analysis.Pass, decl *ast.FuncDecl) map[string]*asmFunc
componentsOfType generates a list of components of type t. For example, given string, the components are the string itself, the base, and the length.
func componentsOfType(arch *asmArch, t types.Type) []component
func init()
func newComponent(suffix string, kind asmKind, typ string, offset int, size int, outer string) component
func run(pass *analysis.Pass) (interface{}, error)
Generated with Arrow