# REQUIRES: hexagon # RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %s -o %t # RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %S/Inputs/hexagon-shared.s -o %t2.o # RUN: ld.lld -shared %t2.o -soname %t3.so -o %t3.so # RUN: ld.lld -shared %t %t3.so -soname %t4.so -o %t4.so # RUN: llvm-objdump -d -j .plt %t4.so | FileCheck --check-prefix=PLT %s # RUN: llvm-objdump -d -j .text %t4.so | FileCheck --check-prefix=TEXT %s # RUN: llvm-objdump -D -j .got %t4.so | FileCheck --check-prefix=GOT %s # RUN: llvm-readelf -r %t4.so | FileCheck --check-prefix=RELO %s .global foo foo: # _HEX_32_PCREL .word _DYNAMIC - . call ##bar # R_HEX_PLT_B22_PCREL call bar@PLT # R_HEX_GOT_11_X and R_HEX_GOT_32_6_X r2=add(pc,##_GLOBAL_OFFSET_TABLE_@PCREL) r0 = memw (r2+##bar@GOT) jumpr r0 # R_HEX_GOT_16_X r0 = add(r1,##bar@GOT) # R_HEX_32 .data .global var .type var,@object .p2align 2 var: .word 10 .size var, 4 .global pvar .type pvar,@object pvar: .word var .size pvar, 4 # PLT: { immext(#131008 # PLT: r28 = add(pc,##131032) } # PLT: { r14 -= add(r28,#16) # PLT: r15 = memw(r28+#8) # PLT: r28 = memw(r28+#4) } # PLT: { r14 = asr(r14,#2) # PLT: jumpr r28 } # PLT: { trap0(#219) } # PLT: immext(#131008) # PLT: r14 = add(pc,##131016) } # PLT: r28 = memw(r14+#0) } # PLT: jumpr r28 } # TEXT: 10000: 00 00 01 00 00010000 # TEXT: { call 0x10050 } # TEXT: r0 = add(r1,##-65416) } # GOT: .got: # GOT: 20080: 00 00 00 00 00000000 # RELO: 00020080 00000121 R_HEX_GLOB_DAT # RELO: 00030004 00000406 R_HEX_32 # RELO: 00030018 00000122 R_HEX_JMP_SLOT