summaryrefslogtreecommitdiff
path: root/test/ELF/arm-attributes.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/ELF/arm-attributes.s')
-rw-r--r--test/ELF/arm-attributes.s183
1 files changed, 183 insertions, 0 deletions
diff --git a/test/ELF/arm-attributes.s b/test/ELF/arm-attributes.s
new file mode 100644
index 0000000000000..14517e8fc7893
--- /dev/null
+++ b/test/ELF/arm-attributes.s
@@ -0,0 +1,183 @@
+// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-attributes1.s -o %t1.o
+// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t2.o
+
+// RUN: ld.lld %t1.o %t2.o -o %t
+// RUN: llvm-readobj -arm-attributes %t | FileCheck %s
+// RUN: ld.lld %t1.o %t2.o -shared -o %t2
+// RUN: llvm-readobj -arm-attributes %t2 | FileCheck %s
+// RUN: ld.lld %t1.o %t2.o -r -o %t3
+// RUN: llvm-readobj -arm-attributes %t3 | FileCheck %s
+// REQUIRES: arm
+
+// Check that we retain only 1 SHT_ARM_ATTRIBUTES section. At present we do not
+// try and merge or use the contents of SHT_ARM_ATTRIBUTES sections. We just
+// pass the first one through.
+ .text
+ .syntax unified
+ .eabi_attribute 67, "2.09" @ Tag_conformance
+ .cpu cortex-a8
+ .eabi_attribute 6, 10 @ Tag_CPU_arch
+ .eabi_attribute 7, 65 @ Tag_CPU_arch_profile
+ .eabi_attribute 8, 1 @ Tag_ARM_ISA_use
+ .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
+ .fpu neon
+ .eabi_attribute 15, 1 @ Tag_ABI_PCS_RW_data
+ .eabi_attribute 16, 1 @ Tag_ABI_PCS_RO_data
+ .eabi_attribute 17, 2 @ Tag_ABI_PCS_GOT_use
+ .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
+ .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
+ .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
+ .eabi_attribute 34, 1 @ Tag_CPU_unaligned_access
+ .eabi_attribute 24, 1 @ Tag_ABI_align_needed
+ .eabi_attribute 25, 1 @ Tag_ABI_align_preserved
+ .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
+ .eabi_attribute 18, 4 @ Tag_ABI_PCS_wchar_t
+ .eabi_attribute 26, 2 @ Tag_ABI_enum_size
+ .eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
+ .eabi_attribute 68, 1 @ Tag_Virtualization_use
+ .globl _start
+ .p2align 2
+ .type _start,%function
+_start:
+ .globl func
+ bl func
+ bx lr
+
+// CHECK: BuildAttributes {
+// CHECK-NEXT: FormatVersion: 0x41
+// CHECK-NEXT: Section 1 {
+// CHECK-NEXT: SectionLength: 72
+// CHECK-NEXT: Vendor: aeabi
+// CHECK-NEXT: Tag: Tag_File (0x1)
+// CHECK-NEXT: Size: 62
+// CHECK-NEXT: FileAttributes {
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 67
+// CHECK-NEXT: TagName: conformance
+// CHECK-NEXT: Value: 2.09
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 5
+// CHECK-NEXT: TagName: CPU_name
+// CHECK-NEXT: Value: cortex-a8
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 6
+// CHECK-NEXT: Value: 10
+// CHECK-NEXT: TagName: CPU_arch
+// CHECK-NEXT: Description: ARM v7
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 7
+// CHECK-NEXT: Value: 65
+// CHECK-NEXT: TagName: CPU_arch_profile
+// CHECK-NEXT: Description: Application
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 8
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ARM_ISA_use
+// CHECK-NEXT: Description: Permitted
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 9
+// CHECK-NEXT: Value: 2
+// CHECK-NEXT: TagName: THUMB_ISA_use
+// CHECK-NEXT: Description: Thumb-2
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 10
+// CHECK-NEXT: Value: 3
+// CHECK-NEXT: TagName: FP_arch
+// CHECK-NEXT: Description: VFPv3
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 12
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: Advanced_SIMD_arch
+// CHECK-NEXT: Description: NEONv1
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 14
+// CHECK-NEXT: Value: 0
+// CHECK-NEXT: TagName: ABI_PCS_R9_use
+// CHECK-NEXT: Description: v6
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 15
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_PCS_RW_data
+// CHECK-NEXT: Description: PC-relative
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 16
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_PCS_RO_data
+// CHECK-NEXT: Description: PC-relative
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 17
+// CHECK-NEXT: Value: 2
+// CHECK-NEXT: TagName: ABI_PCS_GOT_use
+// CHECK-NEXT: Description: GOT-Indirect
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 18
+// CHECK-NEXT: Value: 4
+// CHECK-NEXT: TagName: ABI_PCS_wchar_t
+// CHECK-NEXT: Description: 4-byte
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 20
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_FP_denormal
+// CHECK-NEXT: Description: IEEE-754
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 21
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_FP_exceptions
+// CHECK-NEXT: Description: IEEE-754
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 23
+// CHECK-NEXT: Value: 3
+// CHECK-NEXT: TagName: ABI_FP_number_model
+// CHECK-NEXT: Description: IEEE-754
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 24
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_align_needed
+// CHECK-NEXT: Description: 8-byte alignment
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 25
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_align_preserved
+// CHECK-NEXT: Description: 8-byte data alignment
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 26
+// CHECK-NEXT: Value: 2
+// CHECK-NEXT: TagName: ABI_enum_size
+// CHECK-NEXT: Description: Int32
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 34
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: CPU_unaligned_access
+// CHECK-NEXT: Description: v6-style
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 38
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: ABI_FP_16bit_format
+// CHECK-NEXT: Description: IEEE-754
+// CHECK-NEXT: }
+// CHECK-NEXT: Attribute {
+// CHECK-NEXT: Tag: 68
+// CHECK-NEXT: Value: 1
+// CHECK-NEXT: TagName: Virtualization_use
+// CHECK-NEXT: Description: TrustZone
+// CHECK-NEXT: }