4 // RUN
: split-file
%s
%t
6 // RUN
: llvm-mc
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%S
/Inputs
/arm-vfp-arg-base.s
-o
%t/base.o
7 // RUN
: llvm-mc
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%S
/Inputs
/arm-vfp-arg-vfp.s
-o
%t/vfp.o
8 // RUN
: llvm-mc
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%S
/Inputs
/arm-vfp-arg-toolchain.s
-o
%t/toolchain.o
9 // RUN
: llvm-mc
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%t/main.s
-o
%t/main.o
10 // RUN
: llvm-mc
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%t/vendor.s
-o
%t/vendor.o
11 // RUN
: not ld.lld
%t/main.o
%t/base.o
%t/vfp.o
-o
%t/a.out
2>&1 | FileCheck
%s
12 // RUN
: not ld.lld
%t/main.o
%t/base.o
%t/vendor.o
-o
%t/a.out
2>&1 | FileCheck
%s
13 // RUN
: not ld.lld
%t/main.o
%t/base.o
%t/toolchain.o
-o
%t/a.out
2>&1 | FileCheck
%s
14 // RUN
: not ld.lld
%t/main.o
%t/vfp.o
%t/base.o
-o
%t/a.out
2>&1 | FileCheck
%s
15 // RUN
: not ld.lld
%t/main.o
%t/vfp.o
%t/toolchain.o
-o
%t/a.out
2>&1 | FileCheck
%s
16 // RUN
: not ld.lld
%t/main.o
%t/toolchain.o
%t/base.o
-o
%t/a.out
2>&1 | FileCheck
%s
17 // RUN
: not ld.lld
%t/main.o
%t/toolchain.o
%t/vfp.o
-o
%t/a.out
2>&1 | FileCheck
%s
19 // CHECK
: incompatible Tag_ABI_VFP_args
33 .eabi_attribute 28, 3 // Tag_ABI_VFP_args = 3 (Compatible with all)
37 .type _start, %function
44 // Manually construct
a custom
.ARM.attributes section
45 .section .ARM.attributes,"",%0x70000003 // SHT_ARM_ATTRIBUTES
47 // Initial byte giving the section format version
50 // Subsection with
a name that won
't be recognised as a known vendor
52 .word vendor_subsect_end - vendor_subsect_start // subsection length
53 .asciz "ShouldBeIgnored" // vendor name
54 .dcb.b 64, 0xff // dummy vendor section contents
57 // Subsection that should be identical to the attributes defined by
58 // Inputs/arm-vfp-arg-vfp.s
60 .word aeabi_subsect_end - aeabi_subsect_start
61 .asciz "aeabi" // vendor name indicating the standard subsection
62 file_subsubsect_start:
63 .byte 1 // introduce sub-subsection of attributes for the whole file
64 .word file_subsubsect_end - file_subsubsect_start // sub-subsection len
67 .byte 6, 10 // CPU_arch = ARM v7
68 .byte 7, 'A' // CPU_arch_profile = Application
69 .byte 8, 1 // ARM_ISA_use = Permitted
70 .byte 9, 2 // THUMB_ISA_use = Thumb-2
71 .byte 18, 4 // ABI_PCS_wchar_t = 4-byte
72 .byte 20, 1 // ABI_FP_denormal = IEEE-754
73 .byte 21, 1 // ABI_FP_exceptions = IEEE-754
74 .byte 23, 3 // ABI_FP_number_model = IEEE-754
75 .byte 24, 1 // ABI_align_needed = 8-byte alignment
76 .byte 25, 1 // ABI_align_preserved = 8-byte data alignment
77 .byte 26, 2 // ABI_enum_size = Int32
78 .byte 28, 1 // ABI_VFP_args = AAPCS VFP
79 .byte 30, 6 // ABI_optimization_goals = Best Debugging
80 .byte 34, 1 // CPU_unaligned_access = v6-style