Instructions can load values from memory at an address computed by an offset to the current pc. S390 aka z/Architecture implements such instructions.
This change implements two extensions to relocation to support this.
On s390, there are call instructions that branch to an address relative to the current pc. If the offset encodable in the instruction does not suffice, a pc-relative load is used to load the target address from the constant section in the code buffer into a register that is then used as branch target. Relocations must support switching between these two implementations. For this we need a relocation that stores the offset of the address in the constant section, as this value can not be read from the instruction.
Further the pc-relative instructions encode the offset from the instruction to the constant. If the constant section is resized, or the instruction is moved (as during shorten branches), this offset must be adapted. To compute the new offset, the change in offset must be known. To compute this we store the position of the constant section in the CodeBlob.