@@ -1452,35 +1452,36 @@ Thread-local storage descriptors
14521452
14531453.. table :: TLS descriptor relocations
14541454
1455- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1456- | ELF64 Code | ELF32 Code | Name | Operation | Comment |
1457- +============+============+=================================+==================================+=======================================================================================================+
1458- | 560 | 122 | R\_ <CLS>\_ TLSDESC\_ LD\_ PREL19 | G(GTLSDESC(S+A)) - P | Set a load-literal immediate to bits [20:2]; check -2\ :sup:`20` <= X < 2\ :sup:`20`; check X & 3 = 0.|
1459- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1460- | 561 | 123 | R\_ <CLS>\_ TLSDESC\_ ADR\_ PREL21 | G(GTLSDESC(S+A) - P | Set an ADR immediate field to bits [20:0]; check -2\ :sup: `20` <= X < 2\ :sup: `20`. |
1461- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1462- | 562 | 124 | R\_ <CLS>\_ TLSDESC\_ ADR\_ PAGE21 | Page(G(GTLSDESC(S+A))) - Page(P) | Set an ADRP immediate field to bits [32:12] of X; check -2\ :sup: `32` <= X < 2\ :sup: `32`. |
1463- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1464- | 563 | \- | R\_ <CLS>\_ TLSDESC\_ LD64\_ LO12 | G(GTLSDESC(S+A)) | Set an LD offset field to bits [11:3] of X. No overflow check; check X & 7 = 0. |
1465- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1466- | \- | 125 | R\_ <CLS>\_ TLSDESC\_ LD32\_ LO12 | G(GTLSDESC(S+A)) | Set an LD offset field to bits [11:2] of X. No overflow check; check X & 3 = 0. |
1467- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1468- | 564 | 126 | R\_ <CLS>\_ TLSDESC\_ ADD\_ LO12 | G(GTLSDESC(S+A)) | Set an ADD immediate field to bits [11:0] of X. No overflow check. |
1469- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1470- | 565 | \- | R\_ <CLS>\_ TLSDESC\_ OFF\_ G1 | G(GTLSDESC(S+A)) - GOT | Set a MOV[NZ] immediate field to bits [31:16] of X; check -2\ :sup: `32` <= X < 2\ :sup: `32`. |
1471- | | | | | See notes below. |
1472- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1473- | 566 | \- | R\_ <CLS>\_ TLSDESC\_ OFF\_ G0\_ NC | G(GTLSDESC(S+A)) - GOT | Set a MOVK immediate field to bits [15:0] of X. No overflow check. |
1474- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1475- | 567 | \- | R\_ <CLS>\_ TLSDESC\_ LDR | None | For relaxation only. Must be used to identify an LDR instruction which loads the TLS |
1476- | | | | | descriptor function pointer for S + A if it has no other relocation. |
1477- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1478- | 568 | \- | R\_ <CLS>\_ TLSDESC\_ ADD | None | For relaxation only. Must be used to identify an ADD instruction which computes the |
1479- | | | | | address of the TLS Descriptor for S + A if it has no other relocation. |
1480- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1481- | 569 | 127 | R\_ <CLS>\_ TLSDESC\_ CALL | None | For relaxation only. Must be used to identify a BLR instruction which performs an indirect |
1482- | | | | | call to the TLS descriptor function for S + A. |
1483- +------------+------------+---------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------+
1455+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1456+ | ELF64 Code | ELF32 Code | Name | Operation | Comment |
1457+ +============+============+=================================+==================================+==============================================================================================+
1458+ | 560 | 122 | R\_ <CLS>\_ TLSDESC\_ LD\_ PREL19 | G(GTLSDESC(S+A)) - P | Set a load-literal immediate to bits [20:2]; check -2\ :sup: `20` <= X < 2\ :sup: `20`; check |
1459+ | | | | | X & 3 = 0. |
1460+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1461+ | 561 | 123 | R\_ <CLS>\_ TLSDESC\_ ADR\_ PREL21 | G(GTLSDESC(S+A) - P | Set an ADR immediate field to bits [20:0]; check -2\ :sup: `20` <= X < 2\ :sup: `20`. |
1462+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1463+ | 562 | 124 | R\_ <CLS>\_ TLSDESC\_ ADR\_ PAGE21 | Page(G(GTLSDESC(S+A))) - Page(P) | Set an ADRP immediate field to bits [32:12] of X; check -2\ :sup: `32` <= X < 2\ :sup: `32`. |
1464+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1465+ | 563 | \- | R\_ <CLS>\_ TLSDESC\_ LD64\_ LO12 | G(GTLSDESC(S+A)) | Set an LD offset field to bits [11:3] of X. No overflow check; check X & 7 = 0. |
1466+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1467+ | \- | 125 | R\_ <CLS>\_ TLSDESC\_ LD32\_ LO12 | G(GTLSDESC(S+A)) | Set an LD offset field to bits [11:2] of X. No overflow check; check X & 3 = 0. |
1468+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1469+ | 564 | 126 | R\_ <CLS>\_ TLSDESC\_ ADD\_ LO12 | G(GTLSDESC(S+A)) | Set an ADD immediate field to bits [11:0] of X. No overflow check. |
1470+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1471+ | 565 | \- | R\_ <CLS>\_ TLSDESC\_ OFF\_ G1 | G(GTLSDESC(S+A)) - GOT | Set a MOV[NZ] immediate field to bits [31:16] of X; check -2\ :sup: `32` <= X < 2\ :sup: `32`. |
1472+ | | | | | See notes below. |
1473+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1474+ | 566 | \- | R\_ <CLS>\_ TLSDESC\_ OFF\_ G0\_ NC | G(GTLSDESC(S+A)) - GOT | Set a MOVK immediate field to bits [15:0] of X. No overflow check. |
1475+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1476+ | 567 | \- | R\_ <CLS>\_ TLSDESC\_ LDR | None | For relaxation only. Must be used to identify an LDR instruction which loads the TLS |
1477+ | | | | | descriptor function pointer for S + A if it has no other relocation. |
1478+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1479+ | 568 | \- | R\_ <CLS>\_ TLSDESC\_ ADD | None | For relaxation only. Must be used to identify an ADD instruction which computes the |
1480+ | | | | | address of the TLS Descriptor for S + A if it has no other relocation. |
1481+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
1482+ | 569 | 127 | R\_ <CLS>\_ TLSDESC\_ CALL | None | For relaxation only. Must be used to identify a BLR instruction which performs an indirect |
1483+ | | | | | call to the TLS descriptor function for S + A. |
1484+ +------------+------------+---------------------------------+----------------------------------+----------------------------------------------------------------------------------------------+
14841485
14851486
14861487.. note ::
0 commit comments