angr.go.optimization_passes.pinned_register_rewriter¶
- class angr.go.optimization_passes.pinned_register_rewriter.GoPinnedRegisterRewriter¶
Bases:
OptimizationPassFold reads of the ABI zero register (X15 on amd64) into the constant 0.
Compiled Go code never writes the zero register, so its reads are the constant 0 rather than an undefined input; leaving them alone turns every zero-initialization into a phantom parameter.
- ARCHES = None¶
- PLATFORMS = None¶
- STAGE: OptimizationPassStage = 1¶
- NAME = 'Fold the Go zero register into constants'¶
- __init__(func, manager, **kwargs)¶
- class angr.go.optimization_passes.pinned_register_rewriter.GoWideZeroStoreSplitter¶
Bases:
OptimizationPassMOVUPS X15, off(SP)zeroes two words of a frame slot at once. Split it into word stores so the words of a slice/string header kept in the frame stay separate stack variables instead of one 16-byte variable that every later word write updates with an insert.- ARCHES = None¶
- PLATFORMS = None¶
- STAGE: OptimizationPassStage = 3¶
- NAME = 'Split Go wide zero stores into words'¶
- __init__(func, manager, **kwargs)¶