brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · da9f998 Raw
138 lines · plain
1# RUN: rm -rf %t && mkdir -p %t2# RUN: llvm-mc --triple=loongarch32 --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.w $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: *{4}(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    .globl test_external_call72    .p2align  273test_external_call:74    bl external_func75    .size test_external_call, .-test_external_call76 77    .globl test_external_jump78    .p2align 279test_external_jump:80    b external_func81    .size test_external_jump, .-test_external_jump82 83## Check R_LARCH_GOT_PC_HI20 / R_LARCH_GOT_PC_LO12 handling with a reference to84## an external symbol. Validate both the reference to the GOT entry, and also85## the content of the GOT entry.86 87# jitlink-check: *{4}(got_addr(elf_reloc.o, external_data)) = external_data88# jitlink-check: decode_operand(test_gotpage_external, 1)[19:0] = \89# jitlink-check:   (got_addr(elf_reloc.o, external_data)[31:12] - \90# jitlink-check:      test_gotpage_external[31:12] + \91# jitlink-check:      got_addr(elf_reloc.o, external_data)[11:11])[19:0]92# jitlink-check: decode_operand(test_gotoffset12_external, 2)[11:0] = \93# jitlink-check:   got_addr(elf_reloc.o, external_data)[11:0]94    .globl test_gotpage_external95    .p2align 296test_gotpage_external:97    pcalau12i $a0, %got_pc_hi20(external_data)98    .size test_gotpage_external, .-test_gotpage_external99 100    .globl test_gotoffset12_external101    .p2align 2102test_gotoffset12_external:103    ld.w $a0, $a0, %got_pc_lo12(external_data)104    .size test_gotoffset12_external, .-test_gotoffset12_external105 106## Check R_LARCH_B16 relocation for compare and branch instructions.107 108# jitlink-check: decode_operand(test_br16, 2)[17:0] = \109# jitlink-check:   (test_br16_target - test_br16)[17:0]110    .globl test_br16, test_br16_target111    .p2align 2112test_br16:113    beq $t1, $t2, %b16(test_br16_target)114    .skip (1 << 16)115test_br16_target:116    .size test_br16, .-test_br16117 118## Check R_LARCH_B21 relocation for compare and branch instructions.119 120# jitlink-check: decode_operand(test_br21, 1)[22:0] = \121# jitlink-check:   (test_br21_target - test_br21)[22:0]122    .globl test_br21, test_br21_target123    .p2align 2124test_br21:125    beqz $t1, %b21(test_br21_target)126    .skip (1 << 21)127test_br21_target:128    .size test_br21, .-test_br21129 130 131    .globl named_data132    .p2align 4133    .type named_data,@object134named_data:135    .quad 0x2222222222222222136    .quad 0x3333333333333333137    .size named_data, .-named_data138