| // RUN: llvm-mc < %s -triple=aarch64-none-linux-gnu -filetype=obj | llvm-readobj -r | FileCheck %s |
| |
| .file "<stdin>" |
| .text |
| .globl test_jumptable |
| .type test_jumptable,@function |
| test_jumptable: // @test_jumptable |
| .cfi_startproc |
| // %bb.0: |
| ubfx w1, w0, #0, #32 |
| cmp w0, #4 |
| b.hi .LBB0_3 |
| // %bb.1: |
| adrp x0, .LJTI0_0 |
| add x0, x0, #:lo12:.LJTI0_0 |
| ldr x0, [x0, x1, lsl #3] |
| br x0 |
| .LBB0_2: // %lbl1 |
| movz x0, #1 |
| ret |
| .LBB0_3: // %def |
| mov x0, xzr |
| ret |
| .LBB0_4: // %lbl2 |
| movz x0, #2 |
| ret |
| .LBB0_5: // %lbl3 |
| movz x0, #4 |
| ret |
| .LBB0_6: // %lbl4 |
| movz x0, #8 |
| ret |
| .Ltmp0: |
| .size test_jumptable, .Ltmp0-test_jumptable |
| .cfi_endproc |
| .section .rodata,"a",@progbits |
| .align 3 |
| .LJTI0_0: |
| .xword .LBB0_2 |
| .xword .LBB0_4 |
| .xword .LBB0_5 |
| .xword .LBB0_3 |
| .xword .LBB0_6 |
| |
| |
| |
| // First make sure we get a page/lo12 pair in .text to pick up the jump-table |
| |
| // CHECK: Relocations [ |
| // CHECK: Section ({{[0-9]+}}) .rela.text { |
| // CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 .rodata |
| // CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADD_ABS_LO12_NC .rodata |
| // CHECK: } |
| |
| // Also check the targets in .rodata are relocated |
| // CHECK: Section ({{[0-9]+}}) .rela.rodata { |
| // CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ABS64 .text |
| // CHECK: } |
| // CHECK: ] |