brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · a390d1b Raw
164 lines · plain
1# RUN: rm -rf %t && mkdir -p %t2# RUN: llvm-mc --triple=loongarch64 --filetype=obj -o %t/elf_reloc.o %s3# RUN: llvm-jitlink --noexec \4# RUN:              --abs external_data=0xdeadbeef \5# RUN:              --abs external_func=0xcafef00d \6# RUN:              --check %s %t/elf_reloc.o7    .text8 9    .globl main10    .p2align 211    .type main,@function12main:13    ret14 15    .size main, .-main16 17## Check R_LARCH_B26 relocation of a local function call.18 19# jitlink-check: decode_operand(local_func_call26, 0)[27:0] = \20# jitlink-check:   (local_func - local_func_call26)[27:0]21# jitlink-check: decode_operand(local_func_jump26, 0)[27:0] = \22# jitlink-check:   (local_func - local_func_jump26)[27:0]23    .globl local_func24    .p2align 225    .type local_func,@function26local_func:27    ret28    .size local_func, .-local_func29 30    .globl local_func_call2631    .p2align 232local_func_call26:33    bl local_func34    .size local_func_call26, .-local_func_call2635 36    .globl local_func_jump2637    .p2align 238local_func_jump26:39    b local_func40    .size local_func_jump26, .-local_func_jump2641 42## Check R_LARCH_PCALA_HI20 / R_LARCH_PCALA_LO12 relocation of a local symbol.43 44# jitlink-check: decode_operand(test_pcalau12i_pcrel, 1)[19:0] = \45# jitlink-check:   (named_data - test_pcalau12i_pcrel)[31:12] + \46# jitlink-check:      named_data[11:11]47# jitlink-check: decode_operand(test_addi_pcrel_lo12, 2)[11:0] = \48# jitlink-check:   (named_data)[11:0]49    .globl test_pcalau12i_pcrel50    .p2align 251test_pcalau12i_pcrel:52    pcalau12i $a0, %pc_hi20(named_data)53    .size test_pcalau12i_pcrel, .-test_pcalau12i_pcrel54 55    .globl test_addi_pcrel_lo1256    .p2align 257test_addi_pcrel_lo12:58    addi.d $a0, $a0, %pc_lo12(named_data)59    .size test_addi_pcrel_lo12, .-test_addi_pcrel_lo1260 61## Check that calls/jumps to external functions trigger the generation of stubs62## and GOT entries.63 64# jitlink-check: *{8}(got_addr(elf_reloc.o, external_func)) = external_func65# jitlink-check: decode_operand(test_external_call, 0) = \66# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \67# jitlink-check:      test_external_call)[27:0]68# jitlink-check: decode_operand(test_external_jump, 0) = \69# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \70# jitlink-check:      test_external_jump)[27:0]71# jitlink-check: decode_operand(test_external_call36, 1)[19:0] = \72# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \73# jitlink-check:      test_external_call36 + (1<<17))[37:18]74# jitlink-check: decode_operand(test_external_call36 + 4, 2)[17:0] = \75# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \76# jitlink-check:      test_external_call36)[17:0]77    .globl test_external_call78    .p2align  279test_external_call:80    bl external_func81    .size test_external_call, .-test_external_call82 83    .globl test_external_jump84    .p2align 285test_external_jump:86    b external_func87    .size test_external_jump, .-test_external_jump88 89    .globl test_external_call3690    .p2align  291test_external_call36:92    pcaddu18i $ra, %call36(external_func)93    jirl $ra, $ra, 094    .size test_external_call36, .-test_external_call3695 96## Check R_LARCH_GOT_PC_HI20 / R_LARCH_GOT_PC_LO12 handling with a reference to97## an external symbol. Validate both the reference to the GOT entry, and also98## the content of the GOT entry.99 100# jitlink-check: *{8}(got_addr(elf_reloc.o, external_data)) = external_data101# jitlink-check: decode_operand(test_gotpage_external, 1)[19:0] = \102# jitlink-check:   (got_addr(elf_reloc.o, external_data)[31:12] - \103# jitlink-check:      test_gotpage_external[31:12] + \104# jitlink-check:      got_addr(elf_reloc.o, external_data)[11:11])[19:0]105# jitlink-check: decode_operand(test_gotoffset12_external, 2)[11:0] = \106# jitlink-check:   got_addr(elf_reloc.o, external_data)[11:0]107    .globl test_gotpage_external108    .p2align 2109test_gotpage_external:110    pcalau12i $a0, %got_pc_hi20(external_data)111    .size test_gotpage_external, .-test_gotpage_external112 113    .globl test_gotoffset12_external114    .p2align 2115test_gotoffset12_external:116    ld.d $a0, $a0, %got_pc_lo12(external_data)117    .size test_gotoffset12_external, .-test_gotoffset12_external118 119## Check R_LARCH_CALL36 relocation of a local function call.120 121# jitlink-check: decode_operand(local_func_call36, 1)[19:0] = \122# jitlink-check:   ((local_func - local_func_call36) + (1<<17))[37:18]123# jitlink-check: decode_operand(local_func_call36 + 4, 2)[17:0] = \124# jitlink-check:   (local_func - local_func_call36)[17:0]125    .globl local_func_call36126    .p2align 2127local_func_call36:128    pcaddu18i $ra, %call36(local_func)129    jirl $ra, $ra, 0130    .size local_func_call36, .-local_func_call36131 132## Check R_LARCH_B16 relocation for compare and branch instructions.133 134# jitlink-check: decode_operand(test_br16, 2)[17:0] = \135# jitlink-check:   (test_br16_target - test_br16)[17:0]136    .globl test_br16, test_br16_target137    .p2align 2138test_br16:139    beq $t1, $t2, %b16(test_br16_target)140    .skip (1 << 16)141test_br16_target:142    .size test_br16, .-test_br16143 144## Check R_LARCH_B21 relocation for compare and branch instructions.145 146# jitlink-check: decode_operand(test_br21, 1)[22:0] = \147# jitlink-check:   (test_br21_target - test_br21)[22:0]148    .globl test_br21, test_br21_target149    .p2align 2150test_br21:151    beqz $t1, %b21(test_br21_target)152    .skip (1 << 21)153test_br21_target:154    .size test_br21, .-test_br21155 156 157    .globl named_data158    .p2align 4159    .type named_data,@object160named_data:161    .quad 0x2222222222222222162    .quad 0x3333333333333333163    .size named_data, .-named_data164