47 lines · plain
1// This test checks that the veneer are properly handled by BOLT.2// Strip .rela.mytext section to simulate inserted by a linker veneers3// that does not contain relocations.4 5# RUN: llvm-mc -filetype=obj -triple aarch64-unknown-unknown \6# RUN: %s -o %t.o7# RUN: %clang %cflags -fPIC -pie %t.o -o %t.exe -nostdlib \8# RUN: -fuse-ld=lld -Wl,--no-relax -Wl,-q9# RUN: llvm-objdump -d --disassemble-symbols='myveneer' %t.exe | \10# RUN: FileCheck --check-prefix=CHECKVENEER %s11# RUN: llvm-objcopy --remove-section .rela.mytext %t.exe12# RUN: llvm-bolt %t.exe -o %t.bolt --elim-link-veneers=true --lite=013# RUN: llvm-objdump -d -j .text --disassemble-symbols='myveneer' %t.bolt | \14# RUN: FileCheck --check-prefix=CHECKOUTVENEER %s15# RUN: llvm-objdump -d --disassemble-symbols='_start' %t.bolt | FileCheck %s16 17.text18.balign 419.global foo20.type foo, %function21foo:22 adrp x1, foo23 ret24.size foo, .-foo25 26.section ".mytext", "ax"27.balign 428# CHECKOUTVENEER-NOT: {{.*}} <myveneer>:29.global myveneer30.type myveneer, %function31myveneer:32# CHECKVENEER: adrp33# CHECKVENEER-NEXT: add34 adrp x16, foo35 add x16, x16, #:lo12:foo36 br x1637 nop38.size myveneer, .-myveneer39 40.global _start41.type _start, %function42_start:43# CHECK: {{.*}} bl {{.*}} <foo>44 bl myveneer45 ret46.size _start, .-_start47