public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] LoongArch: Add support for TLS Descriptors (TLSDESC)
@ 2023-12-14  2:29 Lulu Cai
  2023-12-14  2:29 ` [PATCH v2 1/5] LoongArch: Add new relocs and macro for TLSDESC Lulu Cai
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Lulu Cai @ 2023-12-14  2:29 UTC (permalink / raw)
  To: binutils
  Cc: xuchenghua, chenglulu, liuzhensong, mengqinggang, xry111,
	i.swmail, maskray, luweining, wanglei, hejinyang, Lulu Cai

In v2, the following changes have been made:

1. The instruction sequences of DESC is modified.
2. Add new tls transition, DESC->IE and IE->LE are supported.
3. Add relaxation for DESC/GD/LD.

The detailed description is as follows:

1. The new instruction sequences is:
   pcalau12i  $a0,%desc_pc_hi20(var)		#R_LARCH_TLS_DESC_PC_HI20
   addi.d     $a0,$a0,%desc_add_pc_lo12(var)	#R_LARCH_TLS_DESC_ADD_PC_LO12
   ld.d       $ra,$a0,%desc_ld(var)		#R_LARCH_TLS_DESC_LD
   jirl       $ra,$ra,%desc_call(var)		#R_LARCH_TLS_DESC_CALL
   add.d      $t0,$a0,$tp

2. For DESC->IE:
   pcalau12i  $a0,%desc_pc_hi20(var)	     => pcalau12i  $a0,%ie_pc_hi20(var)
   addi.d     $a0,$a0,%desc_add_pc_lo12(var) => ld.d       $a0,%ie_pc_lo12(var)
   ld.d       $ra,$a0,%desc_ld(var)	     => NOP
   jirl       $ra,$ra,%desc_call(var)	     => NOP
   add.d      $t0,$a0,$tp			add.d	   $t0,$a0,$tp

   For IE->LE:
   pcalau12i  $a0,%ie_pc_hi20(var)	     => lu12i.w    $a0,%le_hi20(var)
   ld.d       $a0,%ie_pc_lo12(var)	     => ori        $a0,$a0,%le_lo12(var)
   add.d     $t0,$a0,$tp			add.d      $t0,$a0,$tp

3. The instruction sequence of DESC/GD/LD is relaxed when type transition
   cannot be performed.

   For DESC:
   pcalau12i  $a0,%desc_pc_hi20(var)
   addi.d     $a0,$a0,%desc_add_pc_lo12(var)

   after relaxation is:
   pcaddi     $a0,%desc_pcrel_20(var)		#R_LARCH_TLS_DESC_PCREL20_S2

   For GD:
   pcalau12i  $a0,%gd_pc_hi20(var)
   addi.d     $a0,$a0,%got_pc_lo12(var)

   after relaxation is:
   pcaddi     $a0,%gd_pcrel_20(var)		#R_LARCH_TLS_GD_PCREL20_S2

   For LD:
   pcalau12i  $a0,%ld_pc_hi20(var)
   addi.d     $a0,$a0,%got_pc_lo12(var)

   after relaxation is:
   pcaddi     $a0,%ld_pcrel_20(var)		#R_LARCH_TLS_LD_PCREL20_S2

Lulu Cai (4):
  LoongArch: Add new relocs and macro for TLSDESC.
  LoongArch: Add support for TLSDESC in ld.
  LoongArch: Add tls transition support. Transitions between DESC->IE/LE
    and IE->LE are supported now.
  LoongArch: Add testsuit for DESC and tls transition and tls
    relaxation.

mengqinggang (1):
  LoongArch: TLS LD/GD/DESC relaxation.

 bfd/bfd-in2.h                                 |  15 +
 bfd/elfnn-loongarch.c                         | 509 +++++++++++++++++-
 bfd/elfxx-loongarch.c                         | 265 ++++++++-
 bfd/libbfd.h                                  |  15 +
 bfd/reloc.c                                   |  36 ++
 gas/config/tc-loongarch.c                     |  20 +-
 gas/testsuite/gas/loongarch/macro_op.d        | 128 ++---
 gas/testsuite/gas/loongarch/macro_op_32.d     | 120 +++--
 .../gas/loongarch/macro_op_large_abs.d        | 160 +++---
 .../gas/loongarch/macro_op_large_pc.d         | 160 +++---
 gas/testsuite/gas/loongarch/tlsdesc_32.d      |  28 +
 gas/testsuite/gas/loongarch/tlsdesc_32.s      |  12 +
 gas/testsuite/gas/loongarch/tlsdesc_64.d      |  28 +
 gas/testsuite/gas/loongarch/tlsdesc_64.s      |  12 +
 .../gas/loongarch/tlsdesc_large_abs.d         |  21 +
 .../gas/loongarch/tlsdesc_large_abs.s         |   9 +
 .../gas/loongarch/tlsdesc_large_pc.d          |  22 +
 .../gas/loongarch/tlsdesc_large_pc.s          |  13 +
 include/elf/loongarch.h                       |  26 +-
 include/opcode/loongarch.h                    |   6 +
 ld/testsuite/ld-loongarch-elf/desc-ie.d       |  17 +
 ld/testsuite/ld-loongarch-elf/desc-ie.s       |  18 +
 ld/testsuite/ld-loongarch-elf/desc-le.d       |  15 +
 ld/testsuite/ld-loongarch-elf/desc-le.s       |  14 +
 ld/testsuite/ld-loongarch-elf/ie-le.d         |  13 +
 ld/testsuite/ld-loongarch-elf/ie-le.s         |  11 +
 .../ld-loongarch-elf/ld-loongarch-elf.exp     |   7 +
 ld/testsuite/ld-loongarch-elf/macro_op.d      | 391 +++++++-------
 ld/testsuite/ld-loongarch-elf/macro_op_32.d   | 120 +++--
 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d   |  57 ++
 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s   |  66 +++
 opcodes/loongarch-opc.c                       |  54 ++
 32 files changed, 1825 insertions(+), 563 deletions(-)
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_32.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_64.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_abs.s
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.d
 create mode 100644 gas/testsuite/gas/loongarch/tlsdesc_large_pc.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-ie.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/desc-le.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/ie-le.s
 create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d
 create mode 100644 ld/testsuite/ld-loongarch-elf/tlsdesc-dso.s

-- 
2.36.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-12-14  2:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-14  2:29 [PATCH v2 0/5] LoongArch: Add support for TLS Descriptors (TLSDESC) Lulu Cai
2023-12-14  2:29 ` [PATCH v2 1/5] LoongArch: Add new relocs and macro for TLSDESC Lulu Cai
2023-12-14  2:29 ` [PATCH v2 2/5] LoongArch: Add support for TLSDESC in ld Lulu Cai
2023-12-14  2:29 ` [PATCH v2 3/5] LoongArch: Add tls transition support. Transitions between DESC->IE/LE and IE->LE are supported now Lulu Cai
2023-12-14  2:29 ` [PATCH v2 4/5] LoongArch: TLS LD/GD/DESC relaxation Lulu Cai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).