Add extension concept and exploit it for s390x `PRNO'
z/Architecture specifies various "complex" machine instructions whose
register and memory effects cannot be expressed with Valgrind's current
mechanisms.
One example is the PPNO instruction -- "perform pseudorandom number
operation", whose main purpose is to generate a chunk of pseudorandom
data. When doing so, it reads and writes a so-called "parameter block"
while also writing the variable-sized pseudorandom data itself. These
memory effects cannot be adequately represented by the IRDirty concept.
Instead of using dirty helpers, a different approach is to treat such
instructions similar to syscalls, adding a new IRJumpKind for this
purpose.
This patch provides an implementation of this approach and an illustration
of its use at the example of PPNO (or its newer instantiation "PRNO").