# Check MIPS TLS 64-bit relocations handling.

# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux \
# RUN:         %p/Inputs/mips-tls.s -o %t.so.o
# RUN: ld.lld -shared %t.so.o -o %t.so
# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %s -o %t.o

# RUN: ld.lld %t.o %t.so -o %t.exe
# RUN: llvm-objdump -d -s -t %t.exe | FileCheck -check-prefix=DIS %s
# RUN: llvm-readobj -r -mips-plt-got %t.exe | FileCheck %s

# RUN: ld.lld -shared %t.o %t.so -o %t-out.so
# RUN: llvm-objdump -d -s -t %t-out.so | FileCheck -check-prefix=DIS-SO %s
# RUN: llvm-readobj -r -mips-plt-got %t-out.so | FileCheck -check-prefix=SO %s

# REQUIRES: mips

# DIS:      __start:
# DIS-NEXT:    20000:   24 62 80 20   addiu   $2, $3, -32736
# DIS-NEXT:    20004:   24 62 80 30   addiu   $2, $3, -32720
# DIS-NEXT:    20008:   24 62 80 38   addiu   $2, $3, -32712
# DIS-NEXT:    2000c:   24 62 80 48   addiu   $2, $3, -32696
# DIS-NEXT:    20010:   24 62 80 58   addiu   $2, $3, -32680

# DIS:      Contents of section .got:
# DIS-NEXT:  30010 00000000 00000000 80000000 00000000
# DIS-NEXT:  30020 00000000 00000000 00000000 00000000
# DIS-NEXT:  30030 00000000 00000000 00000000 00000001
# DIS-NEXT:  30040 00000000 00000000 00000000 00000001
# DIS-NEXT:  30050 ffffffff ffff8004 ffffffff ffff9004

# DIS: 0000000000040000 l       .tdata          00000000 .tdata
# DIS: 0000000000040000 l       .tdata          00000000 loc
# DIS: 0000000000000004 g       .tdata          00000000 bar
# DIS: 0000000000000000 g       *UND*           00000000 foo

# CHECK:      Relocations [
# CHECK-NEXT:   Section (7) .rela.dyn {
# CHECK-NEXT:     0x30020 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# CHECK-NEXT:     0x30028 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# CHECK-NEXT:     0x30030 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# CHECK-NEXT:   }
# CHECK-NEXT: ]
# CHECK-NEXT: Primary GOT {
# CHECK-NEXT:   Canonical gp value: 0x38000
# CHECK-NEXT:   Reserved entries [
# CHECK:        ]
# CHECK-NEXT:   Local entries [
# CHECK-NEXT:   ]
# CHECK-NEXT:   Global entries [
# CHECK-NEXT:   ]
# CHECK-NEXT:   Number of TLS and multi-GOT entries: 8
#               ^-- -32736 R_MIPS_TLS_GD       R_MIPS_TLS_DTPMOD64 foo
#               ^-- -32728                     R_MIPS_TLS_DTPREL64 foo
#               ^-- -32720 R_MIPS_TLS_GOTTPREL R_MIPS_TLS_TPREL64  foo
#               ^-- -32712 R_MIPS_TLS_LDM      1 loc
#               ^-- -32704                     0 loc
#               ^-- -32696 R_MIPS_TLS_GD       1 bar
#               ^-- -32688                     VA - 0x8000 bar
#               ^-- -32680 R_MIPS_TLS_GOTTPREL VA - 0x7000 bar

# DIS-SO:      Contents of section .got:
# DIS-SO-NEXT:  20000 00000000 00000000 80000000 00000000
# DIS-SO-NEXT:  20010 00000000 00000000 00000000 00000000
# DIS-SO-NEXT:  20020 00000000 00000000 00000000 00000000
# DIS-SO-NEXT:  20030 00000000 00000000 00000000 00000000
# DIS-SO-NEXT:  20040 00000000 00000000 00000000 00000000

# SO:      Relocations [
# SO-NEXT:   Section (7) .rela.dyn {
# SO-NEXT:     0x20028 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE - 0x0
# SO-NEXT:     0x20038 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE bar 0x0
# SO-NEXT:     0x20040 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0
# SO-NEXT:     0x20048 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE bar 0x0
# SO-NEXT:     0x20010 R_MIPS_TLS_DTPMOD64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# SO-NEXT:     0x20018 R_MIPS_TLS_DTPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# SO-NEXT:     0x20020 R_MIPS_TLS_TPREL64/R_MIPS_NONE/R_MIPS_NONE foo 0x0
# SO-NEXT:   }
# SO-NEXT: ]
# SO-NEXT: Primary GOT {
# SO-NEXT:   Canonical gp value: 0x27FF0
# SO-NEXT:   Reserved entries [
# SO:        ]
# SO-NEXT:   Local entries [
# SO-NEXT:   ]
# SO-NEXT:   Global entries [
# SO-NEXT:   ]
# SO-NEXT:   Number of TLS and multi-GOT entries: 8
#            ^-- -32736 R_MIPS_TLS_GD       R_MIPS_TLS_DTPMOD64 foo
#            ^-- -32728                     R_MIPS_TLS_DTPREL64 foo
#            ^-- -32720 R_MIPS_TLS_GOTTPREL R_MIPS_TLS_TPREL64  foo
#            ^-- -32712 R_MIPS_TLS_LDM      R_MIPS_TLS_DTPMOD64 loc
#            ^-- -32704                     0 loc
#            ^-- -32696 R_MIPS_TLS_GD       R_MIPS_TLS_DTPMOD64 bar
#            ^-- -32688                     R_MIPS_TLS_DTPREL64 bar
#            ^-- -32680 R_MIPS_TLS_GOTTPREL R_MIPS_TLS_TPREL64  bar

  .text
  .global  __start
__start:
  addiu $2, $3, %tlsgd(foo)     # R_MIPS_TLS_GD
  addiu $2, $3, %gottprel(foo)  # R_MIPS_TLS_GOTTPREL
  addiu $2, $3, %tlsldm(loc)    # R_MIPS_TLS_LDM
  addiu $2, $3, %tlsgd(bar)     # R_MIPS_TLS_GD
  addiu $2, $3, %gottprel(bar)  # R_MIPS_TLS_GOTTPREL

 .section .tdata,"awT",%progbits
 .global bar
loc:
 .word 0
bar:
 .word 0
