| // REQUIRES:arm |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-base.s -o %tbase.o |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-vfp.s -o %tvfp.o |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-toolchain.s -o %ttoolchain.o |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-compat.s -o %tcompat.o |
| // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o |
| |
| // The default for this file is 0 (Base AAPCS) |
| // RUN: ld.lld %t.o -o %tdefault |
| // RUN: llvm-readobj -file-headers %tdefault | FileCheck -check-prefix=CHECK-BASE %s |
| |
| // Expect explicit Base AAPCS. |
| // RUN: ld.lld %t.o %tbase.o -o %tbase |
| // RUN: llvm-readobj -file-headers %tbase | FileCheck -check-prefix=CHECK-BASE %s |
| |
| // Expect explicit Base AAPCS when linking Base and Compatible. |
| // RUN: ld.lld %t.o %tbase.o %tcompat.o -o %tbasecompat |
| // RUN: llvm-readobj -file-headers %tbasecompat | FileCheck -check-prefix=CHECK-BASE %s |
| |
| // CHECK-BASE: Flags [ (0x5000200) |
| // CHECK-BASE-NEXT: 0x200 |
| // CHECK-BASE-NEXT: 0x1000000 |
| // CHECK-BASE-NEXT: 0x4000000 |
| // CHECK-BASE-NEXT: ] |
| |
| // Expect Hard float VFP AAPCS |
| // RUN: ld.lld %t.o %tvfp.o -o %tvfp |
| // RUN: llvm-readobj -file-headers %tvfp | FileCheck -check-prefix=CHECK-VFP %s |
| |
| // Expect Hard float VFP AAPCS when linking VFP and Compatible |
| // RUN: ld.lld %t.o %tvfp.o %tcompat.o -o %tvfpcompat |
| // RUN: llvm-readobj -file-headers %tvfpcompat | FileCheck -check-prefix=CHECK-VFP %s |
| |
| // CHECK-VFP: Flags [ (0x5000400) |
| // CHECK-VFP-NEXT: 0x400 |
| // CHECK-VFP-NEXT: 0x1000000 |
| // CHECK-VFP-NEXT: 0x4000000 |
| // CHECK-VFP-NEXT: ] |
| |
| // Expect Toolchain specifc to not use either Base or VFP AAPCS |
| // RUN: ld.lld %t.o %ttoolchain.o -o %ttoolchain |
| // RUN: llvm-readobj -file-headers %ttoolchain | FileCheck -check-prefix=CHECK-TOOLCHAIN %s |
| |
| // Expect Toolchain and Compatible to have same affect as Toolchain. |
| // RUN: ld.lld %t.o %ttoolchain.o %tcompat.o -o %ttoolchaincompat |
| // RUN: llvm-readobj -file-headers %ttoolchaincompat | FileCheck -check-prefix=CHECK-TOOLCHAIN %s |
| |
| // CHECK-TOOLCHAIN: Flags [ (0x5000000) |
| // CHECK-TOOLCHAIN-NEXT: 0x1000000 |
| // CHECK-TOOLCHAIN-NEXT: 0x4000000 |
| // CHECK-TOOLCHAIN-NEXT: ] |
| |
| .arch armv7-a |
| .eabi_attribute 20, 1 |
| .eabi_attribute 21, 1 |
| .eabi_attribute 23, 3 |
| .eabi_attribute 24, 1 |
| .eabi_attribute 25, 1 |
| .eabi_attribute 26, 2 |
| .eabi_attribute 30, 6 |
| .eabi_attribute 34, 1 |
| .eabi_attribute 18, 4 |
| // We do not specify Tag_ABI_VFP_args (.eabi_attribute 28) in this file. |
| // When omitted the value of the tag defaults to 0, however if there |
| // are other files with explicit Tag_ABI_VFP_args we use that in |
| // preference. |
| |
| |
| .syntax unified |
| .globl _start |
| .type _start, %function |
| _start: bx lr |