| // RUN: llvm-mc -triple riscv64 -filetype obj -o %t.o %s |
| // RUN: ld.lld --emit-relocs -o %t %t.o |
| // RUN: llvm-bolt --print-cfg --print-only=tls_le,tls_ie -o %t.null %t \ |
| // RUN: | FileCheck %s |
| |
| // CHECK-LABEL: Binary Function "tls_le{{.*}}" after building cfg { |
| // CHECK: lui a5, 0x0 |
| // CHECK-NEXT: add a5, a5, tp |
| // CHECK-NEXT: lw t0, 0x0(a5) |
| // CHECK-NEXT: sw t0, 0x0(a5) |
| |
| // CHECK-LABEL: Binary Function "tls_ie" after building cfg { |
| // CHECK-LABEL: .LBB01 |
| // CHECK: auipc a0, %pcrel_hi(__BOLT_got_zero+{{[0-9]+}}) |
| // CHECK-NEXT: ld a0, %pcrel_lo(.Ltmp0)(a0) |
| .text |
| .globl tls_le, _start |
| .p2align 2 |
| tls_le: |
| _start: |
| nop |
| lui a5, %tprel_hi(i) |
| add a5, a5, tp, %tprel_add(i) |
| lw t0, %tprel_lo(i)(a5) |
| sw t0, %tprel_lo(i)(a5) |
| ret |
| .size _start, .-_start |
| |
| .globl tls_ie |
| .p2align 2 |
| tls_ie: |
| nop |
| la.tls.ie a0, i |
| ret |
| .size tls_ie, .-tls_ie |
| |
| .section .tbss,"awT",@nobits |
| .type i,@object |
| .globl i |
| .p2align 3 |
| i: |
| .quad 0 |
| .size i, .-i |
| |