| // REQUIRES: aarch64 |
| |
| // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t.o |
| // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %S/Inputs/plt-aarch64.s -o %t2.o |
| // RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so |
| // RUN: ld.lld %t.o %t2.so -o %t |
| // RUN: llvm-readelf -S -l %t | FileCheck %s |
| |
| // CHECK-LABEL: Section Headers: |
| // CHECK: .text PROGBITS 00000000002102a0 0002a0 000010 00 AXy 0 0 4 |
| // CHECK: .plt PROGBITS 00000000002102b0 0002b0 000030 00 AXy 0 0 16 |
| // CHECK: .iplt PROGBITS 00000000002102e0 0002e0 000010 00 AXy 0 0 16 |
| |
| // CHECK-LABEL: Program Headers: |
| // CHECK: PHDR |
| // CHECK-NEXT: LOAD |
| // CHECK-NEXT: LOAD 0x0002a0 0x00000000002102a0 0x00000000002102a0 0x000050 0x000050 E 0x10000 |
| |
| // CHECK-LABEL: Section to Segment mapping: |
| /// Index should match the index of the LOAD segment above. |
| // CHECK: 02 .text .plt .iplt |
| |
| .global bar |
| |
| .section .text,"axy",@progbits,unique,0 |
| .global _start |
| _start: |
| bl foo |
| bl bar |
| ret |
| |
| .globl foo |
| .type foo STT_GNU_IFUNC |
| foo: |
| ret |