1ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// RUN: llvm-mc < %s -triple=aarch64-none-linux-gnu -filetype=obj | llvm-readobj -r | FileCheck %s 2ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 3ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .file "<stdin>" 4ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .text 5ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .globl test_jumptable 6ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .type test_jumptable,@function 7ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindolatest_jumptable: // @test_jumptable 8ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .cfi_startproc 9ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// BB#0: 10ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ubfx w1, w0, #0, #32 11ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola cmp w0, #4 12ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola b.hi .LBB0_3 13ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// BB#1: 14ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola adrp x0, .LJTI0_0 15ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola add x0, x0, #:lo12:.LJTI0_0 16ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ldr x0, [x0, x1, lsl #3] 17ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola br x0 18ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LBB0_2: // %lbl1 19ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola movz x0, #1 20ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ret 21ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LBB0_3: // %def 22ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola mov x0, xzr 23ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ret 24ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LBB0_4: // %lbl2 25ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola movz x0, #2 26ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ret 27ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LBB0_5: // %lbl3 28ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola movz x0, #4 29ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ret 30ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LBB0_6: // %lbl4 31ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola movz x0, #8 32ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola ret 33ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.Ltmp0: 34ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .size test_jumptable, .Ltmp0-test_jumptable 35ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .cfi_endproc 36ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .section .rodata,"a",@progbits 37ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .align 3 38ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola.LJTI0_0: 39ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .xword .LBB0_2 40ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .xword .LBB0_4 41ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .xword .LBB0_5 42ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .xword .LBB0_3 43ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola .xword .LBB0_6 44ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 45ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 46ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 47ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// First make sure we get a page/lo12 pair in .text to pick up the jump-table 48ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 49ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: Relocations [ 50ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: Section ({{[0-9]+}}) .rela.text { 51ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADR_PREL_PG_HI21 .rodata 52ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ADD_ABS_LO12_NC .rodata 53ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: } 54ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola 55ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// Also check the targets in .rodata are relocated 56ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: Section ({{[0-9]+}}) .rela.rodata { 57ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK-NEXT: 0x{{[0-9,A-F]+}} R_AARCH64_ABS64 .text 58ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: } 59ade09c7fe7426dca21310911c8ebca17f738342fRafael Espindola// CHECK: ] 60