brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 7f7390f Raw
115 lines · plain
1# REQUIRES: hexagon2# RUN: llvm-mc -mno-fixup -filetype=obj -triple=hexagon-unknown-elf %s -o %t.o3# RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %S/Inputs/hexagon-shared.s -o %t2.o4# RUN: ld.lld -shared %t2.o -soname so -o %t3.so5# RUN: ld.lld -shared %t.o %t3.so -o %t4.so6# RUN: ld.lld -Bsymbolic -shared %t.o %t3.so -o %t5.so7# RUN: llvm-objdump --no-print-imm-hex -d -j .plt %t4.so | FileCheck --check-prefix=PLT %s8# RUN: llvm-objdump --no-print-imm-hex -d -j .text %t4.so | FileCheck --check-prefix=TEXT %s9# RUN: llvm-objdump --no-print-imm-hex -D -j .got %t4.so | FileCheck --check-prefix=GOT %s10# RUN: llvm-readelf -r  %t4.so | FileCheck --check-prefix=RELO %s11# RUN: llvm-readelf -r  %t5.so | FileCheck --check-prefix=SYMBOLIC %s12 13.global _start, foo, hidden_symbol14.hidden hidden_symbol15_start:16# When -Bsymbolic is specified calls to locally resolvables should17# not generate a plt.18call ##foo19# Calls to hidden_symbols should not trigger a plt.20call ##hidden_symbol21 22# _HEX_32_PCREL23.word _DYNAMIC - .24call ##bar25 26# R_HEX_PLT_B22_PCREL27call bar@PLT28# R_HEX_B15_PCREL_X29if (p0) jump bar30# R_HEX_B9_PCREL_X31{ r0 = #0; jump bar }32 33# R_HEX_GOT_11_X and R_HEX_GOT_32_6_X34r2=add(pc,##_GLOBAL_OFFSET_TABLE_@PCREL)35r0 = memw (r2+##bar@GOT)36jumpr r037 38# R_HEX_GOT_16_X39r0 = add(r1,##bar@GOT)40 41# R_HEX_GOT_16_X, duplex42{ r0 = add(r0,##bar@GOT)43  memw(r0) = r2 }44 45# R_HEX_GOT_16_X, pred add46if (p0) r0 = add(r0,##bar@GOT)47if (!p0) r0 = add(r0,##bar@GOT)48{ p0 = cmp.gtu(r0, r1)49  if (p0.new) r0 = add(r0,##bar@GOT) }50{ p0 = cmp.gtu(r0, r1)51  if (!p0.new) r0 = add(r0,##bar@GOT) }52 53# foo is local so no plt will be generated54foo:55  jumpr lr56 57hidden_symbol:58  jumpr lr59 60# R_HEX_3261.data62.global var63.type var,@object64.p2align 265var:66   .word 1067   .size var, 468.global pvar69.type pvar,@object70pvar:71   .word var72   .size pvar, 473 74 75# PLT: { immext(#13126476# PLT-NEXT: r28 = add(pc,##131268) }77# PLT-NEXT: { r14 -= add(r28,#16)78# PLT-NEXT: r15 = memw(r28+#8)79# PLT-NEXT: r28 = memw(r28+#4) }80# PLT-NEXT: { r14 = asr(r14,#2)81# PLT-NEXT: jumpr r28 }82# PLT-NEXT: { trap0(#219) }83# PLT-EMPTY:84# PLT-NEXT: 000102f0 <foo@plt>:85# PLT-NEXT: immext(#131200)86# PLT-NEXT: r14 = add(pc,##131252) }87# PLT-NEXT: r28 = memw(r14+#0) }88# PLT-NEXT: jumpr r28 }89 90# TEXT:  bc 00 01 00 000100bc91# TEXT: { 	call 0x10300 <bar@plt> }92# TEXT: if (p0) jump:nt 0x1030093# TEXT: r0 = #0 ; jump 0x1030094# TEXT: r0 = add(r1,##-65548)95# TEXT: r0 = add(r0,##-65548); memw(r0+#0) = r2 }96# TEXT: if (p0) r0 = add(r0,##-65548)97# TEXT: if (!p0) r0 = add(r0,##-65548)98# TEXT: if (p0.new) r0 = add(r0,##-65548)99# TEXT: if (!p0.new) r0 = add(r0,##-65548)100 101# GOT: .got:102# GOT:  00 00 00 00 00000000 <unknown>103 104# RELO: R_HEX_GLOB_DAT105# RELO: R_HEX_32106# RELO: Relocation section '.rela.plt' at offset 0x22c contains 2 entries:107# RELO: R_HEX_JMP_SLOT {{.*}} foo108# RELO-NEXT: R_HEX_JMP_SLOT {{.*}} bar109# RELO-NOT: R_HEX_JMP_SLOT {{.*}} hidden110 111# Make sure that no PLT is generated for a local call.112# SYMBOLIC: Relocation section '.rela.plt' at offset 0x22c contains 1 entries:113# SYMBOLIC: R_HEX_JMP_SLOT {{.*}} bar114# SYMBOLIC-NOT: R_HEX_JMP_SLOT {{.*}} foo115