184 lines · plain
1// REQUIRES: arm2// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-attributes1.s -o %t1.o3// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t2.o4 5// RUN: ld.lld %t1.o %t2.o -o %t6// RUN: llvm-readobj --arch-specific %t | FileCheck %s7// RUN: ld.lld %t1.o %t2.o -shared -o %t28// RUN: llvm-readobj --arch-specific %t2 | FileCheck %s9// RUN: ld.lld %t1.o %t2.o -r -o %t310// RUN: llvm-readobj --arch-specific %t3 | FileCheck %s11 12// Check that we retain only 1 SHT_ARM_ATTRIBUTES section. At present we do not13// try and merge or use the contents of SHT_ARM_ATTRIBUTES sections. We just14// pass the first one through.15 .text16 .syntax unified17 .eabi_attribute 67, "2.09" @ Tag_conformance18 .cpu cortex-a819 .eabi_attribute 6, 10 @ Tag_CPU_arch20 .eabi_attribute 7, 65 @ Tag_CPU_arch_profile21 .eabi_attribute 8, 1 @ Tag_ARM_ISA_use22 .eabi_attribute 9, 2 @ Tag_THUMB_ISA_use23 .fpu neon24 .eabi_attribute 15, 1 @ Tag_ABI_PCS_RW_data25 .eabi_attribute 16, 1 @ Tag_ABI_PCS_RO_data26 .eabi_attribute 17, 2 @ Tag_ABI_PCS_GOT_use27 .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal28 .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions29 .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model30 .eabi_attribute 34, 1 @ Tag_CPU_unaligned_access31 .eabi_attribute 24, 1 @ Tag_ABI_align_needed32 .eabi_attribute 25, 1 @ Tag_ABI_align_preserved33 .eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format34 .eabi_attribute 18, 4 @ Tag_ABI_PCS_wchar_t35 .eabi_attribute 26, 2 @ Tag_ABI_enum_size36 .eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use37 .eabi_attribute 68, 1 @ Tag_Virtualization_use38 .globl _start39 .p2align 240 .type _start,%function41_start:42 .globl func43 bl func44 bx lr45 46// CHECK: BuildAttributes {47// CHECK-NEXT: FormatVersion: 0x4148// CHECK-NEXT: Section 1 {49// CHECK-NEXT: SectionLength: 7250// CHECK-NEXT: Vendor: aeabi51// CHECK-NEXT: Tag: Tag_File (0x1)52// CHECK-NEXT: Size: 6253// CHECK-NEXT: FileAttributes {54// CHECK-NEXT: Attribute {55// CHECK-NEXT: Tag: 6756// CHECK-NEXT: TagName: conformance57// CHECK-NEXT: Value: 2.0958// CHECK-NEXT: }59// CHECK-NEXT: Attribute {60// CHECK-NEXT: Tag: 561// CHECK-NEXT: TagName: CPU_name62// CHECK-NEXT: Value: cortex-a863// CHECK-NEXT: }64// CHECK-NEXT: Attribute {65// CHECK-NEXT: Tag: 666// CHECK-NEXT: Value: 1067// CHECK-NEXT: TagName: CPU_arch68// CHECK-NEXT: Description: ARM v769// CHECK-NEXT: }70// CHECK-NEXT: Attribute {71// CHECK-NEXT: Tag: 772// CHECK-NEXT: Value: 6573// CHECK-NEXT: TagName: CPU_arch_profile74// CHECK-NEXT: Description: Application75// CHECK-NEXT: }76// CHECK-NEXT: Attribute {77// CHECK-NEXT: Tag: 878// CHECK-NEXT: Value: 179// CHECK-NEXT: TagName: ARM_ISA_use80// CHECK-NEXT: Description: Permitted81// CHECK-NEXT: }82// CHECK-NEXT: Attribute {83// CHECK-NEXT: Tag: 984// CHECK-NEXT: Value: 285// CHECK-NEXT: TagName: THUMB_ISA_use86// CHECK-NEXT: Description: Thumb-287// CHECK-NEXT: }88// CHECK-NEXT: Attribute {89// CHECK-NEXT: Tag: 1090// CHECK-NEXT: Value: 391// CHECK-NEXT: TagName: FP_arch92// CHECK-NEXT: Description: VFPv393// CHECK-NEXT: }94// CHECK-NEXT: Attribute {95// CHECK-NEXT: Tag: 1296// CHECK-NEXT: Value: 197// CHECK-NEXT: TagName: Advanced_SIMD_arch98// CHECK-NEXT: Description: NEONv199// CHECK-NEXT: }100// CHECK-NEXT: Attribute {101// CHECK-NEXT: Tag: 14102// CHECK-NEXT: Value: 0103// CHECK-NEXT: TagName: ABI_PCS_R9_use104// CHECK-NEXT: Description: v6105// CHECK-NEXT: }106// CHECK-NEXT: Attribute {107// CHECK-NEXT: Tag: 15108// CHECK-NEXT: Value: 1109// CHECK-NEXT: TagName: ABI_PCS_RW_data110// CHECK-NEXT: Description: PC-relative111// CHECK-NEXT: }112// CHECK-NEXT: Attribute {113// CHECK-NEXT: Tag: 16114// CHECK-NEXT: Value: 1115// CHECK-NEXT: TagName: ABI_PCS_RO_data116// CHECK-NEXT: Description: PC-relative117// CHECK-NEXT: }118// CHECK-NEXT: Attribute {119// CHECK-NEXT: Tag: 17120// CHECK-NEXT: Value: 2121// CHECK-NEXT: TagName: ABI_PCS_GOT_use122// CHECK-NEXT: Description: GOT-Indirect123// CHECK-NEXT: }124// CHECK-NEXT: Attribute {125// CHECK-NEXT: Tag: 18126// CHECK-NEXT: Value: 4127// CHECK-NEXT: TagName: ABI_PCS_wchar_t128// CHECK-NEXT: Description: 4-byte129// CHECK-NEXT: }130// CHECK-NEXT: Attribute {131// CHECK-NEXT: Tag: 20132// CHECK-NEXT: Value: 1133// CHECK-NEXT: TagName: ABI_FP_denormal134// CHECK-NEXT: Description: IEEE-754135// CHECK-NEXT: }136// CHECK-NEXT: Attribute {137// CHECK-NEXT: Tag: 21138// CHECK-NEXT: Value: 1139// CHECK-NEXT: TagName: ABI_FP_exceptions140// CHECK-NEXT: Description: IEEE-754141// CHECK-NEXT: }142// CHECK-NEXT: Attribute {143// CHECK-NEXT: Tag: 23144// CHECK-NEXT: Value: 3145// CHECK-NEXT: TagName: ABI_FP_number_model146// CHECK-NEXT: Description: IEEE-754147// CHECK-NEXT: }148// CHECK-NEXT: Attribute {149// CHECK-NEXT: Tag: 24150// CHECK-NEXT: Value: 1151// CHECK-NEXT: TagName: ABI_align_needed152// CHECK-NEXT: Description: 8-byte alignment153// CHECK-NEXT: }154// CHECK-NEXT: Attribute {155// CHECK-NEXT: Tag: 25156// CHECK-NEXT: Value: 1157// CHECK-NEXT: TagName: ABI_align_preserved158// CHECK-NEXT: Description: 8-byte data alignment159// CHECK-NEXT: }160// CHECK-NEXT: Attribute {161// CHECK-NEXT: Tag: 26162// CHECK-NEXT: Value: 2163// CHECK-NEXT: TagName: ABI_enum_size164// CHECK-NEXT: Description: Int32165// CHECK-NEXT: }166// CHECK-NEXT: Attribute {167// CHECK-NEXT: Tag: 34168// CHECK-NEXT: Value: 1169// CHECK-NEXT: TagName: CPU_unaligned_access170// CHECK-NEXT: Description: v6-style171// CHECK-NEXT: }172// CHECK-NEXT: Attribute {173// CHECK-NEXT: Tag: 38174// CHECK-NEXT: Value: 1175// CHECK-NEXT: TagName: ABI_FP_16bit_format176// CHECK-NEXT: Description: IEEE-754177// CHECK-NEXT: }178// CHECK-NEXT: Attribute {179// CHECK-NEXT: Tag: 68180// CHECK-NEXT: Value: 1181// CHECK-NEXT: TagName: Virtualization_use182// CHECK-NEXT: Description: TrustZone183// CHECK-NEXT: }184