@@ -1057,7 +1057,7 @@ and offset of the TLS variable is stored in a GOT slot (first 8 bytes contains t
10571057offset and the second 8 bytes the size). This GOT slot is initialized by a
10581058``R_MORELLO_TPREL128 `` dynamic relocation. The access must use the
10591059``R_MORELLO_TLSIE_ADR_GOTTPREL_PAGE20 `` and ``R_MORELLO_TLSIE_ADD_LO12 ``
1060- relocations in order to allow relaxation to Local Exec . There are no other
1060+ relocations. There are no other
10611061requirements on how this is performed or the registers used. A possible
10621062instruction sequence could be:
10631063
@@ -1073,37 +1073,13 @@ instruction sequence could be:
10731073 Initial Exec to Local Exec relaxation
10741074~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10751075
1076- The linker will generate 16 bytes in a read-only section, containing
1077- the offset in the static TLS block in the first 8 bytes and the size of the
1078- symbol in the next 8 bytes:
1079-
1080- .. code-block :: text
1081-
1082- .section .rodata
1083- _sym_data:
1084- .xword tlsoffset(sym)
1085- .xword sizeof(sym)
1086-
1087- .. note ::
1088-
1089- ``tlsoffset(sym) `` denotes the offset in the static TLS block of the symbol
1090- ``sym ``, while sizeof(sym) denotes the size of the symbol ``sym ``. These are
1091- not valid assembler directives.
1092-
1093- The relaxation is performed by:
1094-
1095- - changing the ``R_MORELLO_TLSIE_ADR_GOTTPREL_PAGE20 `` relocation on the symbol
1096- ``sym `` to a ``R_MORELLO_ADR_PREL_PG_HI20 `` with the symbol ``_sym_data ``
1097-
1098- - changing the ``R_MORELLO_TLSIE_ADD_LO12 `` relocation on symbol the ``sym `` to
1099- a ``R_AARCH64_ADD_ABS_LO12_NC `` relocation with the symbol ``_sym_data ``.
1076+ No such relaxation is specified.
11001077
11011078.. note ::
11021079
1103- The symbol and section names in the example above are only used for explanation
1104- purposes. An implementation does not need to create an additional symbol when
1105- performing this relaxation. There is no constraint on the name of the read-only
1106- section where the data is placed.
1080+ Both the offset in the TLS block and the size of ``S `` are known by the
1081+ static linker and can be emitted as constants with no associated
1082+ ``R_MORELLO_TPREL128 `` relocation.
11071083
11081084General Dynamic
11091085^^^^^^^^^^^^^^^
@@ -1144,29 +1120,11 @@ The relaxed sequence is:
11441120 General Dynamic to Local Exec relaxation
11451121~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11461122
1147- The linker will generate 16 bytes in a read-only section, containing
1148- the offset in the static TLS block in the first 8 bytes and the size of the
1149- symbol in the next 8 bytes:
1150-
1151- .. code-block :: text
1152-
1153- .section .rodata
1154- _sym_data:
1155- .xword tlsoffset(sym)
1156- .xword sizeof(sym)
1123+ No such relaxation is specified; the static linker should instead relax to
1124+ Initial Exec.
11571125
11581126.. note ::
11591127
1160- ``tlsoffset(sym) `` denotes the offset in the static TLS block of the symbol
1161- ``sym ``, while sizeof(sym) denotes the size of the symbol ``sym ``. These are
1162- not valid assembler directives.
1163-
1164- The relaxed sequence is:
1165-
1166- .. code-block :: text
1167-
1168- adrp c0, _sym_data
1169- add c0, c0, :lo12:_sym_data
1170- ldp x0, x1, [c0]
1171- add c0, c2, x0
1172- scbnds c0, c0, x1
1128+ Both the offset in the TLS block and the size of ``S `` are known by the
1129+ static linker and can be emitted as constants with no associated
1130+ ``R_MORELLO_TPREL128 `` relocation.
0 commit comments