/// Check that we write addends for AArch64 TLSDESC relocations with -z rel
/// See https://bugs.llvm.org/show_bug.cgi?id=47009
// REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o
// RUN: ld.lld -shared %t.o -o %t-rela.so
// RUN: llvm-readobj -W -r -x .got %t-rela.so | FileCheck %s --check-prefixes=RELA,RELA-NO-ADDENDS
// RUN: ld.lld -shared %t.o -o %t-rela-addends.so --apply-dynamic-relocs
// RUN: llvm-readobj -W -r -x .got %t-rela-addends.so | FileCheck %s --check-prefixes=RELA,RELA-WITH-ADDENDS

// RELA:       Relocations [
// RELA-NEXT:   Section (5) .rela.dyn {
// RELA-NEXT:     0x[[#%x,ADDR:]] R_AARCH64_TLSDESC - 0x0
// RELA-NEXT:     0x[[#ADDR+16]]  R_AARCH64_TLSDESC - 0x4
// RELA-NEXT:   }
// RELA-NEXT: ]
// RELA-EMPTY:
// RELA-NEXT:              Hex dump of section '.got':
// RELA-NEXT:              0x000[[#ADDR]]    00000000 00000000 00000000 00000000
// RELA-NO-ADDENDS-NEXT:   0x000[[#ADDR+16]] 00000000 00000000 00000000 00000000
// RELA-WITH-ADDENDS-NEXT: 0x000[[#ADDR+16]] 00000000 00000000 04000000 00000000
///                Addend 0x4 for R_AARCH64_TLSDESC -----^
// RELA-EMPTY:

// RUN: ld.lld -shared %t.o -o %t-rel.so -z rel
// RUN: llvm-readobj -W -r -x .got %t-rel.so | FileCheck %s --check-prefix=REL
// REL:       Relocations [
// REL-NEXT:   Section (5) .rel.dyn {
// REL-NEXT:     0x[[#%x,ADDR:]] R_AARCH64_TLSDESC -{{$}}
// REL-NEXT:     0x[[#ADDR+16]]  R_AARCH64_TLSDESC -{{$}}
// REL-NEXT:   }
// REL-NEXT: ]
// REL-EMPTY:
// REL-NEXT: Hex dump of section '.got':
// REL-NEXT: 0x000[[#ADDR]]    00000000 00000000 00000000 00000000
// REL-NEXT: 0x000[[#ADDR+16]] 00000000 00000000 04000000 00000000
///  Addend 0x4 for R_AARCH64_TLSDESC -----^
// REL-EMPTY:

        .text
foo:
        adrp    x0, :tlsdesc:x
        ldr     x1, [x0, :tlsdesc_lo12:x]
        add     x0, x0, :tlsdesc_lo12:x
        .tlsdesccall x
        blr     x1
        adrp    x0, :tlsdesc:y
        ldr     x1, [x0, :tlsdesc_lo12:y]
        add     x0, x0, :tlsdesc_lo12:y
        .tlsdesccall y
        blr     x1
        ret

        .section        .tbss,"awT",@nobits
        .p2align        2
        .hidden x
x:
        .word   0

        .p2align        2
        .hidden y
y:
        .word   0
