as: s390 Operand Modifier
1
1 9.40.3.6 Instruction Operand Modifier
1 .....................................
1
1 If a symbol modifier is attached to a symbol in an expression for an
1 instruction operand field, the symbol term is replaced with a reference
1 to an object in the global offset table (GOT) or the procedure linkage
1 table (PLT). The following expressions are allowed: 'symbol@modifier +
1 constant', 'symbol@modifier + label + constant', and 'symbol@modifier -
1 label + constant'. The term 'symbol' is the symbol that will be entered
1 into the GOT or PLT, 'label' is a local label, and 'constant' is an
1 arbitrary expression that the assembler can evaluate to a constant
1 value.
1
1 The term '(symbol + constant1)@modifier +/- label + constant2' is
1 also accepted but a warning message is printed and the term is converted
1 to 'symbol@modifier +/- label + constant1 + constant2'.
1
1 '@got'
1 '@got12'
1 The @got modifier can be used for displacement fields, 16-bit
1 immediate fields and 32-bit pc-relative immediate fields. The
1 @got12 modifier is synonym to @got. The symbol is added to the
1 GOT. For displacement fields and 16-bit immediate fields the symbol
1 term is replaced with the offset from the start of the GOT to the
1 GOT slot for the symbol. For a 32-bit pc-relative field the
1 pc-relative offset to the GOT slot from the current instruction
1 address is used.
1 '@gotent'
1 The @gotent modifier can be used for 32-bit pc-relative immediate
1 fields. The symbol is added to the GOT and the symbol term is
1 replaced with the pc-relative offset from the current instruction
1 to the GOT slot for the symbol.
1 '@gotoff'
1 The @gotoff modifier can be used for 16-bit immediate fields. The
1 symbol term is replaced with the offset from the start of the GOT
1 to the address of the symbol.
1 '@gotplt'
1 The @gotplt modifier can be used for displacement fields, 16-bit
1 immediate fields, and 32-bit pc-relative immediate fields. A
1 procedure linkage table entry is generated for the symbol and a
1 jump slot for the symbol is added to the GOT. For displacement
1 fields and 16-bit immediate fields the symbol term is replaced with
1 the offset from the start of the GOT to the jump slot for the
1 symbol. For a 32-bit pc-relative field the pc-relative offset to
1 the jump slot from the current instruction address is used.
1 '@plt'
1 The @plt modifier can be used for 16-bit and 32-bit pc-relative
1 immediate fields. A procedure linkage table entry is generated for
1 the symbol. The symbol term is replaced with the relative offset
1 from the current instruction to the PLT entry for the symbol.
1 '@pltoff'
1 The @pltoff modifier can be used for 16-bit immediate fields. The
1 symbol term is replaced with the offset from the start of the PLT
1 to the address of the symbol.
1 '@gotntpoff'
1 The @gotntpoff modifier can be used for displacement fields. The
1 symbol is added to the static TLS block and the negated offset to
1 the symbol in the static TLS block is added to the GOT. The symbol
1 term is replaced with the offset to the GOT slot from the start of
1 the GOT.
1 '@indntpoff'
1 The @indntpoff modifier can be used for 32-bit pc-relative
1 immediate fields. The symbol is added to the static TLS block and
1 the negated offset to the symbol in the static TLS block is added
1 to the GOT. The symbol term is replaced with the pc-relative offset
1 to the GOT slot from the current instruction address.
1
1 For more information about the thread local storage modifiers
1 'gotntpoff' and 'indntpoff' see the ELF extension documentation 'ELF
1 Handling For Thread-Local Storage'.
1