// REQUIRES: arm // 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 // 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: }