xref: /llvm-project/lld/test/ELF/arm-tag-vfp-args.s (revision b159906a9a45ba9d8655a29014d585203faf0629)
1// REQUIRES:arm
2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-base.s -o %tbase.o
3// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-vfp.s -o %tvfp.o
4// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-toolchain.s -o %ttoolchain.o
5// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-compat.s -o %tcompat.o
6// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
7
8// The default for this file is 0 (Base AAPCS)
9// RUN: ld.lld %t.o -o %tdefault
10// RUN: llvm-readobj --file-headers %tdefault | FileCheck -check-prefix=CHECK-BASE %s
11
12// Expect explicit Base AAPCS.
13// RUN: ld.lld %t.o %tbase.o -o %tbase
14// RUN: llvm-readobj --file-headers %tbase | FileCheck -check-prefix=CHECK-BASE %s
15
16// Expect explicit Base AAPCS when linking Base and Compatible.
17// RUN: ld.lld %t.o %tbase.o %tcompat.o -o %tbasecompat
18// RUN: llvm-readobj --file-headers %tbasecompat | FileCheck -check-prefix=CHECK-BASE %s
19
20// CHECK-BASE:   Flags [ (0x5000200)
21// CHECK-BASE-NEXT:     0x200
22// CHECK-BASE-NEXT:     0x1000000
23// CHECK-BASE-NEXT:     0x4000000
24// CHECK-BASE-NEXT:   ]
25
26// Expect Hard float VFP AAPCS
27// RUN: ld.lld %t.o %tvfp.o -o %tvfp
28// RUN: llvm-readobj --file-headers %tvfp | FileCheck -check-prefix=CHECK-VFP %s
29
30// Expect Hard float VFP AAPCS when linking VFP and Compatible
31// RUN: ld.lld %t.o %tvfp.o %tcompat.o -o %tvfpcompat
32// RUN: llvm-readobj --file-headers %tvfpcompat | FileCheck -check-prefix=CHECK-VFP %s
33
34// CHECK-VFP:   Flags [ (0x5000400)
35// CHECK-VFP-NEXT:     0x400
36// CHECK-VFP-NEXT:     0x1000000
37// CHECK-VFP-NEXT:     0x4000000
38// CHECK-VFP-NEXT:   ]
39
40// Expect Toolchain specifc to not use either Base or VFP AAPCS
41// RUN: ld.lld %t.o %ttoolchain.o -o %ttoolchain
42// RUN: llvm-readobj --file-headers %ttoolchain | FileCheck -check-prefix=CHECK-TOOLCHAIN %s
43
44// Expect Toolchain and Compatible to have same affect as Toolchain.
45// RUN: ld.lld %t.o %ttoolchain.o %tcompat.o -o %ttoolchaincompat
46// RUN: llvm-readobj --file-headers %ttoolchaincompat | FileCheck -check-prefix=CHECK-TOOLCHAIN %s
47
48// CHECK-TOOLCHAIN:   Flags [ (0x5000000)
49// CHECK-TOOLCHAIN-NEXT:     0x1000000
50// CHECK-TOOLCHAIN-NEXT:     0x4000000
51// CHECK-TOOLCHAIN-NEXT:   ]
52
53        .arch armv7-a
54        .eabi_attribute 20, 1
55        .eabi_attribute 21, 1
56        .eabi_attribute 23, 3
57        .eabi_attribute 24, 1
58        .eabi_attribute 25, 1
59        .eabi_attribute 26, 2
60        .eabi_attribute 30, 6
61        .eabi_attribute 34, 1
62        .eabi_attribute 18, 4
63        // We do not specify Tag_ABI_VFP_args (.eabi_attribute 28) in this file.
64        // When omitted the value of the tag defaults to 0, however if there
65        // are other files with explicit Tag_ABI_VFP_args we use that in
66        // preference.
67
68
69        .syntax unified
70        .globl _start
71        .type _start, %function
72_start:  bx lr
73