diff options
Diffstat (limited to 'llvm/test/tools/llvm-readobj/ELF/ARM')
26 files changed, 1547 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-0.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-0.s new file mode 100644 index 00000000000..dfee5411256 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-0.s @@ -0,0 +1,241 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 0 +@CHECK: .eabi_attribute 6, 0 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: Pre-v4 + +.eabi_attribute Tag_CPU_arch_profile, 0 +@CHECK: .eabi_attribute 7, 0 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ARM_ISA_use, 0 +@CHECK: .eabi_attribute 8, 0 +@CHECK-OBJ: Tag: 8 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ARM_ISA_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_THUMB_ISA_use, 0 +@CHECK: .eabi_attribute 9, 0 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_FP_arch, 0 +@CHECK: .eabi_attribute 10, 0 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_WMMX_arch, 0 +@CHECK: .eabi_attribute 11, 0 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_Advanced_SIMD_arch, 0 +@CHECK: .eabi_attribute 12, 0 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_PCS_config, 0 +@CHECK: .eabi_attribute 13, 0 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ABI_PCS_R9_use, 0 +@CHECK: .eabi_attribute 14, 0 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: v6 + +.eabi_attribute Tag_ABI_PCS_RW_data, 0 +@CHECK: .eabi_attribute 15, 0 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: Absolute + +.eabi_attribute Tag_ABI_PCS_RO_data, 0 +@CHECK: .eabi_attribute 16, 0 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: Absolute + +.eabi_attribute Tag_ABI_PCS_GOT_use, 0 +@CHECK: .eabi_attribute 17, 0 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_PCS_wchar_t, 0 +@CHECK: .eabi_attribute 18, 0 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_rounding, 0 +@CHECK: .eabi_attribute 19, 0 +@CHECK-OBJ: Tag: 19 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_rounding +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_denormal, 0 +@CHECK: .eabi_attribute 20, 0 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: Unsupported + +.eabi_attribute Tag_ABI_FP_exceptions, 0 +@CHECK: .eabi_attribute 21, 0 +@CHECK-OBJ: Tag: 21 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_exceptions +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_user_exceptions, 0 +@CHECK: .eabi_attribute 22, 0 +@CHECK-OBJ: Tag: 22 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_user_exceptions +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_number_model, 0 +@CHECK: .eabi_attribute 23, 0 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_align_needed, 0 +@CHECK: .eabi_attribute 24, 0 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_align_preserved, 0 +@CHECK: .eabi_attribute 25, 0 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: Not Required + +.eabi_attribute Tag_ABI_enum_size, 0 +@CHECK: .eabi_attribute 26, 0 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_HardFP_use, 0 +@CHECK: .eabi_attribute 27, 0 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Tag_FP_arch + +.eabi_attribute Tag_ABI_VFP_args, 0 +@CHECK: .eabi_attribute 28, 0 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: AAPCS + +.eabi_attribute Tag_ABI_WMMX_args, 0 +@CHECK: .eabi_attribute 29, 0 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: AAPCS + +.eabi_attribute Tag_ABI_optimization_goals, 0 +@CHECK: .eabi_attribute 30, 0 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_ABI_FP_optimization_goals, 0 +@CHECK: .eabi_attribute 31, 0 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: None + +.eabi_attribute Tag_compatibility, 0, "ARM" +@CHECK: .eabi_attribute 32, 0 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 0, ARM +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: No Specific Requirements + +.eabi_attribute Tag_CPU_unaligned_access, 0 +@CHECK: .eabi_attribute 34, 0 +@CHECK-OBJ: Tag: 34 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: CPU_unaligned_access +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_FP_HP_extension, 0 +@CHECK: .eabi_attribute 36, 0 +@CHECK-OBJ: Tag: 36 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: FP_HP_extension +@CHECK-OBJ-NEXT: Description: If Available + +.eabi_attribute Tag_ABI_FP_16bit_format, 0 +@CHECK: .eabi_attribute 38, 0 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_MPextension_use, 0 +@CHECK: .eabi_attribute 42, 0 +@CHECK-OBJ: Tag: 42 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: MPextension_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_DIV_use, 0 +@CHECK: .eabi_attribute 44, 0 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: If Available + +.eabi_attribute Tag_DSP_extension, 0 +@CHECK: .eabi_attribute 46, 0 +@CHECK-OBJ: Tag: 46 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: DSP_extension +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_Virtualization_use, 0 +@CHECK: .eabi_attribute 68, 0 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 0 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: Not Permitted + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-1.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-1.s new file mode 100644 index 00000000000..d7cc1aaf120 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-1.s @@ -0,0 +1,227 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 1 +@CHECK: .eabi_attribute 6, 1 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v4 + +.eabi_attribute Tag_ARM_ISA_use, 1 +@CHECK: .eabi_attribute 8, 1 +@CHECK-OBJ: Tag: 8 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ARM_ISA_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_THUMB_ISA_use, 1 +@CHECK: .eabi_attribute 9, 1 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Thumb-1 + +.eabi_attribute Tag_FP_arch, 1 +@CHECK: .eabi_attribute 10, 1 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv1 + +.eabi_attribute Tag_WMMX_arch, 1 +@CHECK: .eabi_attribute 11, 1 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: WMMXv1 + +.eabi_attribute Tag_Advanced_SIMD_arch, 1 +@CHECK: .eabi_attribute 12, 1 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: NEONv1 + +.eabi_attribute Tag_PCS_config, 1 +@CHECK: .eabi_attribute 13, 1 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Bare Platform + +.eabi_attribute Tag_ABI_PCS_R9_use, 1 +@CHECK: .eabi_attribute 14, 1 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: Static Base + +.eabi_attribute Tag_ABI_PCS_RW_data, 1 +@CHECK: .eabi_attribute 15, 1 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: PC-relative + +.eabi_attribute Tag_ABI_PCS_RO_data, 1 +@CHECK: .eabi_attribute 16, 1 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: PC-relative + +.eabi_attribute Tag_ABI_PCS_GOT_use, 1 +@CHECK: .eabi_attribute 17, 1 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: Direct + +.eabi_attribute Tag_ABI_FP_rounding, 1 +@CHECK: .eabi_attribute 19, 1 +@CHECK-OBJ: Tag: 19 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_rounding +@CHECK-OBJ-NEXT: Description: Runtime + +.eabi_attribute Tag_ABI_FP_denormal, 1 +@CHECK: .eabi_attribute 20, 1 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_exceptions, 1 +@CHECK: .eabi_attribute 21, 1 +@CHECK-OBJ: Tag: 21 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_exceptions +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_user_exceptions, 1 +@CHECK: .eabi_attribute 22, 1 +@CHECK-OBJ: Tag: 22 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_user_exceptions +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_FP_number_model, 1 +@CHECK: .eabi_attribute 23, 1 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: Finite Only + +.eabi_attribute Tag_ABI_align_needed, 1 +@CHECK: .eabi_attribute 24, 1 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment + +.eabi_attribute Tag_ABI_align_preserved, 1 +@CHECK: .eabi_attribute 25, 1 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte data alignment + +.eabi_attribute Tag_ABI_enum_size, 1 +@CHECK: .eabi_attribute 26, 1 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Packed + +.eabi_attribute Tag_ABI_HardFP_use, 1 +@CHECK: .eabi_attribute 27, 1 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Single-Precision + +.eabi_attribute Tag_ABI_VFP_args, 1 +@CHECK: .eabi_attribute 28, 1 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: AAPCS VFP + +.eabi_attribute Tag_ABI_WMMX_args, 1 +@CHECK: .eabi_attribute 29, 1 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: iWMMX + +.eabi_attribute Tag_ABI_optimization_goals, 1 +@CHECK: .eabi_attribute 30, 1 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Speed + +.eabi_attribute Tag_ABI_FP_optimization_goals, 1 +@CHECK: .eabi_attribute 31, 1 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Speed + +.eabi_attribute Tag_compatibility, 1, "" +@CHECK: .eabi_attribute 32, 1 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 1, +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Conformant + +.eabi_attribute Tag_CPU_unaligned_access, 1 +@CHECK: .eabi_attribute 34, 1 +@CHECK-OBJ: Tag: 34 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: CPU_unaligned_access +@CHECK-OBJ-NEXT: Description: v6-style + +.eabi_attribute Tag_FP_HP_extension, 1 +@CHECK: .eabi_attribute 36, 1 +@CHECK-OBJ: Tag: 36 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: FP_HP_extension +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_ABI_FP_16bit_format, 1 +@CHECK: .eabi_attribute 38, 1 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_MPextension_use, 1 +@CHECK: .eabi_attribute 42, 1 +@CHECK-OBJ: Tag: 42 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: MPextension_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_DIV_use, 1 +@CHECK: .eabi_attribute 44, 1 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_DSP_extension, 1 +@CHECK: .eabi_attribute 46, 1 +@CHECK-OBJ: Tag: 46 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: DSP_extension +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_Virtualization_use, 1 +@CHECK: .eabi_attribute 68, 1 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 1 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: TrustZone + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-10.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-10.s new file mode 100644 index 00000000000..1c62fee75ad --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-10.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 10 +@CHECK: .eabi_attribute 6, 10 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v7 + +.eabi_attribute Tag_ABI_align_needed, 10 +@CHECK: .eabi_attribute 24, 10 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 1024-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 10 +@CHECK: .eabi_attribute 25, 10 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 10 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 1024-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-11.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-11.s new file mode 100644 index 00000000000..04a2e41065d --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-11.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 11 +@CHECK: .eabi_attribute 6, 11 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6-M + +.eabi_attribute Tag_ABI_align_needed, 11 +@CHECK: .eabi_attribute 24, 11 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 2048-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 11 +@CHECK: .eabi_attribute 25, 11 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 11 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 2048-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-12.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-12.s new file mode 100644 index 00000000000..e36ed9b6521 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-12.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 12 +@CHECK: .eabi_attribute 6, 12 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6S-M + +.eabi_attribute Tag_ABI_align_needed, 12 +@CHECK: .eabi_attribute 24, 12 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 4096-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 12 +@CHECK: .eabi_attribute 25, 12 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 12 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 4096-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-13.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-13.s new file mode 100644 index 00000000000..407995c01a5 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-13.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 13 +@CHECK: .eabi_attribute 6, 13 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 13 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v7E-M + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-136.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-136.s new file mode 100644 index 00000000000..674970a654e --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-136.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_compatibility, 136, "Foo Corp" +@CHECK: .eabi_attribute 32, 136 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 136, Foo Corp +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-14.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-14.s new file mode 100644 index 00000000000..c15a5cd535f --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-14.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 14 +@CHECK: .eabi_attribute 6, 14 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 14 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v8 + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-15.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-15.s new file mode 100644 index 00000000000..1fd1869c9c7 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-15.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_compatibility, 15, "Longer Corporation NaMe" +@CHECK: .eabi_attribute 32, 15 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 15, Longer Corporation NaMe +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-2.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-2.s new file mode 100644 index 00000000000..33aeca8a1a7 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-2.s @@ -0,0 +1,178 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 2 +@CHECK: .eabi_attribute 6, 2 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v4T + +.eabi_attribute Tag_THUMB_ISA_use, 2 +@CHECK: .eabi_attribute 9, 2 +@CHECK-OBJ: Tag: 9 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: THUMB_ISA_use +@CHECK-OBJ-NEXT: Description: Thumb-2 + +.eabi_attribute Tag_FP_arch, 2 +@CHECK: .eabi_attribute 10, 2 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv2 + +.eabi_attribute Tag_WMMX_arch, 2 +@CHECK: .eabi_attribute 11, 2 +@CHECK-OBJ: Tag: 11 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: WMMX_arch +@CHECK-OBJ-NEXT: Description: WMMXv2 + +.eabi_attribute Tag_Advanced_SIMD_arch, 2 +@CHECK: .eabi_attribute 12, 2 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: NEONv2+FMA + +.eabi_attribute Tag_PCS_config, 2 +@CHECK: .eabi_attribute 13, 2 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Linux Application + +.eabi_attribute Tag_ABI_PCS_R9_use, 2 +@CHECK: .eabi_attribute 14, 2 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: TLS + +.eabi_attribute Tag_ABI_PCS_RW_data, 2 +@CHECK: .eabi_attribute 15, 2 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: SB-relative + +.eabi_attribute Tag_ABI_PCS_RO_data, 2 +@CHECK: .eabi_attribute 16, 2 +@CHECK-OBJ: Tag: 16 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_PCS_GOT_use, 2 +@CHECK: .eabi_attribute 17, 2 +@CHECK-OBJ: Tag: 17 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use +@CHECK-OBJ-NEXT: Description: GOT-Indirect + +.eabi_attribute Tag_ABI_PCS_wchar_t, 2 +@CHECK: .eabi_attribute 18, 2 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: 2-byte + +.eabi_attribute Tag_ABI_FP_denormal, 2 +@CHECK: .eabi_attribute 20, 2 +@CHECK-OBJ: Tag: 20 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_denormal +@CHECK-OBJ-NEXT: Description: Sign Only + +.eabi_attribute Tag_ABI_FP_number_model, 2 +@CHECK: .eabi_attribute 23, 2 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: RTABI + +.eabi_attribute Tag_ABI_align_needed, 2 +@CHECK: .eabi_attribute 24, 2 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 4-byte alignment + +.eabi_attribute Tag_ABI_align_preserved, 2 +@CHECK: .eabi_attribute 25, 2 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte data and code alignment + +.eabi_attribute Tag_ABI_enum_size, 2 +@CHECK: .eabi_attribute 26, 2 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: Int32 + +.eabi_attribute Tag_ABI_HardFP_use, 2 +@CHECK: .eabi_attribute 27, 2 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_VFP_args, 2 +@CHECK: .eabi_attribute 28, 2 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: Custom + +.eabi_attribute Tag_ABI_WMMX_args, 2 +@CHECK: .eabi_attribute 29, 2 +@CHECK-OBJ: Tag: 29 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_WMMX_args +@CHECK-OBJ-NEXT: Description: Custom + +.eabi_attribute Tag_ABI_optimization_goals, 2 +@CHECK: .eabi_attribute 30, 2 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Speed + +.eabi_attribute Tag_ABI_FP_optimization_goals, 2 +@CHECK: .eabi_attribute 31, 2 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Speed + +.eabi_attribute Tag_compatibility, 2, "" +@CHECK: .eabi_attribute 32, 2 +@CHECK-OBJ: Tag: 32 +@CHECK-OBJ-NEXT: Value: 2, +@CHECK-OBJ-NEXT: TagName: compatibility +@CHECK-OBJ-NEXT: Description: AEABI Non-Conformant + +.eabi_attribute Tag_ABI_FP_16bit_format, 2 +@CHECK: .eabi_attribute 38, 2 +@CHECK-OBJ: Tag: 38 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format +@CHECK-OBJ-NEXT: Description: VFPv3 + +.eabi_attribute Tag_DIV_use, 2 +@CHECK: .eabi_attribute 44, 2 +@CHECK-OBJ: Tag: 44 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: DIV_use +@CHECK-OBJ-NEXT: Description: Permitted + +.eabi_attribute Tag_Virtualization_use, 2 +@CHECK: .eabi_attribute 68, 2 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 2 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: Virtualization Extensions + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-3.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-3.s new file mode 100644 index 00000000000..284e6ed8295 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-3.s @@ -0,0 +1,108 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 3 +@CHECK: .eabi_attribute 6, 3 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5T + +.eabi_attribute Tag_FP_arch, 3 +@CHECK: .eabi_attribute 10, 3 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv3 + +.eabi_attribute Tag_Advanced_SIMD_arch, 3 +@CHECK: .eabi_attribute 12, 3 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a NEON + +.eabi_attribute Tag_PCS_config, 3 +@CHECK: .eabi_attribute 13, 3 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Linux DSO + +.eabi_attribute Tag_ABI_PCS_R9_use, 3 +@CHECK: .eabi_attribute 14, 3 +@CHECK-OBJ: Tag: 14 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use +@CHECK-OBJ-NEXT: Description: Unused + +.eabi_attribute Tag_ABI_PCS_RW_data, 3 +@CHECK: .eabi_attribute 15, 3 +@CHECK-OBJ: Tag: 15 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_FP_number_model, 3 +@CHECK: .eabi_attribute 23, 3 +@CHECK-OBJ: Tag: 23 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_FP_number_model +@CHECK-OBJ-NEXT: Description: IEEE-754 + +.eabi_attribute Tag_ABI_align_needed, 3 +@CHECK: .eabi_attribute 24, 3 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_align_preserved, 3 +@CHECK: .eabi_attribute 25, 3 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: Reserved + +.eabi_attribute Tag_ABI_enum_size, 3 +@CHECK: .eabi_attribute 26, 3 +@CHECK-OBJ: Tag: 26 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_enum_size +@CHECK-OBJ-NEXT: Description: External Int32 + +.eabi_attribute Tag_ABI_HardFP_use, 3 +@CHECK: .eabi_attribute 27, 3 +@CHECK-OBJ: Tag: 27 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_HardFP_use +@CHECK-OBJ-NEXT: Description: Tag_FP_arch (deprecated) + +.eabi_attribute Tag_ABI_VFP_args, 3 +@CHECK: .eabi_attribute 28, 3 +@CHECK-OBJ: Tag: 28 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_VFP_args +@CHECK-OBJ-NEXT: Description: Not Permitted + +.eabi_attribute Tag_ABI_optimization_goals, 3 +@CHECK: .eabi_attribute 30, 3 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Size + +.eabi_attribute Tag_ABI_FP_optimization_goals, 3 +@CHECK: .eabi_attribute 31, 3 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Size + +.eabi_attribute Tag_Virtualization_use, 3 +@CHECK: .eabi_attribute 68, 3 +@CHECK-OBJ: Tag: 68 +@CHECK-OBJ-NEXT: Value: 3 +@CHECK-OBJ-NEXT: TagName: Virtualization_use +@CHECK-OBJ-NEXT: Description: TrustZone + Virtualization Extensions + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-4.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-4.s new file mode 100644 index 00000000000..5f5f2b9e9d6 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-4.s @@ -0,0 +1,66 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 4 +@CHECK: .eabi_attribute 6, 4 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5TE + +.eabi_attribute Tag_FP_arch, 4 +@CHECK: .eabi_attribute 10, 4 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv3-D16 + +.eabi_attribute Tag_Advanced_SIMD_arch, 4 +@CHECK: .eabi_attribute 12, 4 +@CHECK-OBJ: Tag: 12 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch +@CHECK-OBJ-NEXT: Description: ARMv8.1-a NEON + +.eabi_attribute Tag_PCS_config, 4 +@CHECK: .eabi_attribute 13, 4 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Palm OS 2004 + +.eabi_attribute Tag_ABI_PCS_wchar_t, 4 +@CHECK: .eabi_attribute 18, 4 +@CHECK-OBJ: Tag: 18 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t +@CHECK-OBJ-NEXT: Description: 4-byte + +.eabi_attribute Tag_ABI_align_needed, 4 +@CHECK: .eabi_attribute 24, 4 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 16-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 4 +@CHECK: .eabi_attribute 25, 4 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 16-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 4 +@CHECK: .eabi_attribute 30, 4 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Size + +.eabi_attribute Tag_ABI_FP_optimization_goals, 4 +@CHECK: .eabi_attribute 31, 4 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 4 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Aggressive Size + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-5.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-5.s new file mode 100644 index 00000000000..d1d386ef978 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-5.s @@ -0,0 +1,52 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 5 +@CHECK: .eabi_attribute 6, 5 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v5TEJ + +.eabi_attribute Tag_FP_arch, 5 +@CHECK: .eabi_attribute 10, 5 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv4 + +.eabi_attribute Tag_PCS_config, 5 +@CHECK: .eabi_attribute 13, 5 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Reserved (Palm OS) + +.eabi_attribute Tag_ABI_align_needed, 5 +@CHECK: .eabi_attribute 24, 5 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 32-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 5 +@CHECK: .eabi_attribute 25, 5 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 32-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 5 +@CHECK: .eabi_attribute 30, 5 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Debugging + +.eabi_attribute Tag_ABI_FP_optimization_goals, 5 +@CHECK: .eabi_attribute 31, 5 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 5 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Accuracy + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-6.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-6.s new file mode 100644 index 00000000000..63c1019a3ac --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-6.s @@ -0,0 +1,52 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 6 +@CHECK: .eabi_attribute 6, 6 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6 + +.eabi_attribute Tag_FP_arch, 6 +@CHECK: .eabi_attribute 10, 6 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: VFPv4-D16 + +.eabi_attribute Tag_PCS_config, 6 +@CHECK: .eabi_attribute 13, 6 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Symbian OS 2004 + +.eabi_attribute Tag_ABI_align_needed, 6 +@CHECK: .eabi_attribute 24, 6 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 64-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 6 +@CHECK: .eabi_attribute 25, 6 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 64-byte data alignment + +.eabi_attribute Tag_ABI_optimization_goals, 6 +@CHECK: .eabi_attribute 30, 6 +@CHECK-OBJ: Tag: 30 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_optimization_goals +@CHECK-OBJ-NEXT: Description: Best Debugging + +.eabi_attribute Tag_ABI_FP_optimization_goals, 6 +@CHECK: .eabi_attribute 31, 6 +@CHECK-OBJ: Tag: 31 +@CHECK-OBJ-NEXT: Value: 6 +@CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals +@CHECK-OBJ-NEXT: Description: Best Accuracy + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-7.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-7.s new file mode 100644 index 00000000000..7f511674aef --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-7.s @@ -0,0 +1,38 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 7 +@CHECK: .eabi_attribute 6, 7 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6KZ + +.eabi_attribute Tag_FP_arch, 7 +@CHECK: .eabi_attribute 10, 7 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a FP + +.eabi_attribute Tag_PCS_config, 7 +@CHECK: .eabi_attribute 13, 7 +@CHECK-OBJ: Tag: 13 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: PCS_config +@CHECK-OBJ-NEXT: Description: Reserved (Symbian OS) + +.eabi_attribute Tag_ABI_align_needed, 7 +@CHECK: .eabi_attribute 24, 7 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 128-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 7 +@CHECK: .eabi_attribute 25, 7 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 7 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 128-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-8.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-8.s new file mode 100644 index 00000000000..42e2c878408 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-8.s @@ -0,0 +1,31 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 8 +@CHECK: .eabi_attribute 6, 8 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6T2 + +.eabi_attribute Tag_FP_arch, 8 +@CHECK: .eabi_attribute 10, 8 +@CHECK-OBJ: Tag: 10 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: FP_arch +@CHECK-OBJ-NEXT: Description: ARMv8-a FP-D16 + +.eabi_attribute Tag_ABI_align_needed, 8 +@CHECK: .eabi_attribute 24, 8 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 256-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 8 +@CHECK: .eabi_attribute 25, 8 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 8 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 256-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-9.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-9.s new file mode 100644 index 00000000000..1d15ddeb79f --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-9.s @@ -0,0 +1,24 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch, 9 +@CHECK: .eabi_attribute 6, 9 +@CHECK-OBJ: Tag: 6 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: CPU_arch +@CHECK-OBJ-NEXT: Description: ARM v6K + +.eabi_attribute Tag_ABI_align_needed, 9 +@CHECK: .eabi_attribute 24, 9 +@CHECK-OBJ: Tag: 24 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: ABI_align_needed +@CHECK-OBJ-NEXT: Description: 8-byte alignment, 512-byte extended alignment + +.eabi_attribute Tag_ABI_align_preserved, 9 +@CHECK: .eabi_attribute 25, 9 +@CHECK-OBJ: Tag: 25 +@CHECK-OBJ-NEXT: Value: 9 +@CHECK-OBJ-NEXT: TagName: ABI_align_preserved +@CHECK-OBJ-NEXT: Description: 8-byte stack alignment, 512-byte data alignment + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-A.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-A.s new file mode 100644 index 00000000000..105e70532aa --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-A.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'A' +@CHECK: .eabi_attribute 7, 65 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 65 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Application + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-M.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-M.s new file mode 100644 index 00000000000..72ea70f30c7 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-M.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'M' +@CHECK: .eabi_attribute 7, 77 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 77 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Microcontroller + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-R.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-R.s new file mode 100644 index 00000000000..6a4c2620bab --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-R.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'R' +@CHECK: .eabi_attribute 7, 82 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 82 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Real-time + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-S.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-S.s new file mode 100644 index 00000000000..a8cd27c156c --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-S.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_CPU_arch_profile, 'S' +@CHECK: .eabi_attribute 7, 83 +@CHECK-OBJ: Tag: 7 +@CHECK-OBJ-NEXT: Value: 83 +@CHECK-OBJ-NEXT: TagName: CPU_arch_profile +@CHECK-OBJ-NEXT: Description: Classic + diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-1.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-1.s new file mode 100644 index 00000000000..2ceaca2cced --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-1.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -A - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_conformance, "0" +@CHECK: .eabi_attribute 67, "0" +@CHECK-OBJ: Tag: 67 +@CHECK-OBJ-NEXT: TagName: conformance +@CHECK-OBJ-NEXT: Value: 0 diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-2.s b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-2.s new file mode 100644 index 00000000000..2ac459aa237 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/attribute-conformance-2.s @@ -0,0 +1,10 @@ +@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj --arch-specific - | FileCheck %s --check-prefix=CHECK-OBJ +@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s \ +@ RUN: | llvm-readobj -A - | FileCheck %s --check-prefix=CHECK-OBJ +.eabi_attribute Tag_conformance, "A.long--non numeric oddity...!!" +@CHECK: .eabi_attribute 67, "A.long--non numeric oddity...!!" +@CHECK-OBJ: Tag: 67 +@CHECK-OBJ-NEXT: TagName: conformance +@CHECK-OBJ-NEXT: Value: A.long--non numeric oddity...!! diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/dwarf-cfi.s b/llvm/test/tools/llvm-readobj/ELF/ARM/dwarf-cfi.s new file mode 100644 index 00000000000..36d71d61c9f --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/dwarf-cfi.s @@ -0,0 +1,27 @@ +# RUN: llvm-mc -triple arm-linux -filetype obj -o - %s | llvm-readobj -u | FileCheck %s + +# CHECK: [0x0] CIE length=16 +# CHECK-NEXT: version: 1 +# CHECK-NEXT: augmentation: zR +# CHECK-NEXT: code_alignment_factor: 1 +# CHECK-NEXT: data_alignment_factor: -4 +# CHECK-NEXT: return_address_register: 14 + +# CHECK: Program: +# CHECK-NEXT: DW_CFA_def_cfa: reg13 +0 + +# CHECK: [0x14] FDE length=16 cie=[0x0] +# CHECK-NEXT: initial_location: 0x0 +# CHECK-NEXT: address_range: 0x4 (end : 0x4) + +# CHECK: Program: +# CHECK-NEXT: DW_CFA_nop: +# CHECK-NEXT: DW_CFA_nop: +# CHECK-NEXT: DW_CFA_nop: + +.cpu cortex-a8 + +foo: +.cfi_startproc +bx lr +.cfi_endproc diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/lit.local.cfg b/llvm/test/tools/llvm-readobj/ELF/ARM/lit.local.cfg new file mode 100644 index 00000000000..236e1d34416 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'ARM' in config.root.targets: + config.unsupported = True diff --git a/llvm/test/tools/llvm-readobj/ELF/ARM/unwind.s b/llvm/test/tools/llvm-readobj/ELF/ARM/unwind.s new file mode 100644 index 00000000000..ef17118283b --- /dev/null +++ b/llvm/test/tools/llvm-readobj/ELF/ARM/unwind.s @@ -0,0 +1,329 @@ +@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj %s -o %t +@ RUN: llvm-readobj -u %t | FileCheck --check-prefixes=CHECK,SYM %s + +@@ If .symtab doesn't exist, we can still dump some information. +@ RUN: llvm-objcopy --allow-broken-links --strip-all %t - | llvm-readobj -u - | FileCheck %s + + .syntax unified + + .cpu cortex-a8 + .fpu neon + + .section .personality + + .type __personality,%function +__personality: + .fnstart + bkpt + .fnend + + + .section .personality0 + + .type personality0,%function +personality0: + .fnstart + bx lr + .fnend + + + .section .personality1 + + .type personality1,%function +personality1: + .fnstart + .pad #0x100 + sub sp, sp, #0x100 + .save {r0-r11} + push {r0-r11} + pop {r0-r11} + add sp, sp, #0x100 + bx lr + .fnend + + + .section .custom_personality + + .type custom_personality,%function +custom_personality: + .fnstart + .personality __personality + bx lr + .fnend + + + .section .opcodes + + .type opcodes,%function +opcodes: + .fnstart + .vsave {d8-d12} + vpush {d8-d12} + vpop {d8-d12} + bx lr + .fnend + + + .section .multiple + + .type function0,%function +function0: + .fnstart + bx lr + .fnend + + .type function1,%function +function1: + .fnstart + .personality __personality + bx lr + .fnend + + .type function2,%function +function2: + .fnstart + bx lr + .fnend + + .section .raw + + .type raw,%function + .thumb_func +raw: + .fnstart + .unwind_raw 12, 0x02 + .unwind_raw -12, 0x42 + .unwind_raw 0, 0x80, 0x00 + .unwind_raw 4, 0x81, 0x00 + .unwind_raw 4, 0x80, 0x01 + .unwind_raw 8, 0x80, 0xc0 + .unwind_raw 12, 0x84, 0xc0 + .unwind_raw 0, 0x91 + .unwind_raw 8, 0xa1 + .unwind_raw 12, 0xa9 + .unwind_raw 0, 0xb0 + .unwind_raw 4, 0xb1, 0x01 + .unwind_raw 0xa04, 0xb2, 0x80, 0x04 + .unwind_raw 24, 0xb3, 0x12 + .unwind_raw 24, 0xba + .unwind_raw 24, 0xc2 + .unwind_raw 24, 0xc6, 0x02 + .unwind_raw 8, 0xc7, 0x03 + .unwind_raw 24, 0xc8, 0x02 + .unwind_raw 24, 0xc9, 0x02 + .unwind_raw 64, 0xd7 + .fnend + + .section .spare + + .type spare,%function +spare: + .fnstart + .unwind_raw 4, 0x00 + .unwind_raw -4, 0x40 + .unwind_raw 0, 0x80, 0x00 + .unwind_raw 4, 0x88, 0x00 + .unwind_raw 0, 0x91 + .unwind_raw 0, 0x9d + .unwind_raw 0, 0x9f + .unwind_raw 0, 0xa0 + .unwind_raw 0, 0xa8 + .unwind_raw 0, 0xb0 + .unwind_raw 0, 0xb1, 0x00 + .unwind_raw 4, 0xb1, 0x01 + .unwind_raw 0, 0xb1, 0x10 + .unwind_raw 0x204, 0xb2, 0x00 + .unwind_raw 16, 0xb3, 0x00 + .unwind_raw 0, 0xb4 + .unwind_raw 16, 0xb8 + .unwind_raw 4, 0xc0 + .unwind_raw 4, 0xc6, 0x00 + .unwind_raw 4, 0xc7, 0x00 + .unwind_raw 4, 0xc7, 0x01 + .unwind_raw 0, 0xc7, 0x10 + .unwind_raw 16, 0xc8, 0x00 + .unwind_raw 16, 0xc9, 0x00 + .unwind_raw 0, 0xca + .unwind_raw 16, 0xd0 + .unwind_raw 0, 0xd8 + .fnend + +@ CHECK: UnwindInformation { +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.personality +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: __personality +@ CHECK: Model: Compact (Inline) +@ CHECK: PersonalityIndex: 0 +@ CHECK: Opcodes [ +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: ] +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.personality0 +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: personality0 +@ CHECK: Model: Compact (Inline) +@ CHECK: PersonalityIndex: 0 +@ CHECK: Opcodes [ +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: ] +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.personality1 +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: personality1 +@ SYM: ExceptionHandlingTable: .ARM.extab.personality1 +@ SYM: TableEntryOffset: 0x0 +@ SYM: Model: Compact +@ SYM: PersonalityIndex: 1 +@ SYM: Opcodes [ +@ SYM: 0xB1 0x0F ; pop {r0, r1, r2, r3} +@ SYM: 0xA7 ; pop {r4, r5, r6, r7, r8, r9, r10, fp} +@ SYM: 0x3F ; vsp = vsp + 256 +@ SYM: 0xB0 ; finish +@ SYM: 0xB0 ; finish +@ SYM: ] +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.custom_personality +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: custom_personality +@ SYM: ExceptionHandlingTable: .ARM.extab.custom_personality +@ SYM: TableEntryOffset: 0x0 +@ SYM: Model: Generic +@ SYM: PersonalityRoutineAddress: 0x0 +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.opcodes +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: opcodes +@ CHECK: Model: Compact (Inline) +@ CHECK: PersonalityIndex: 0 +@ CHECK: Opcodes [ +@ CHECK: 0xC9 0x84 ; pop {d8, d9, d10, d11, d12} +@ CHECK: 0xB0 ; finish +@ CHECK: ] +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.multiple +@ CHECK: Entries [ +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x0 +@ SYM: FunctionName: function0 +@ CHECK: Model: Compact (Inline) +@ CHECK: PersonalityIndex: 0 +@ CHECK: Opcodes [ +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: ] +@ CHECK: } +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x4 +@ SYM: FunctionName: function1 +@ SYM: ExceptionHandlingTable: .ARM.extab.multiple +@ SYM: Model: Generic +@ SYM: PersonalityRoutineAddress: 0x0 +@ CHECK: } +@ CHECK: Entry { +@ CHECK: FunctionAddress: 0x8 +@ SYM: FunctionName: function2 +@ CHECK: Model: Compact (Inline) +@ CHECK: PersonalityIndex: 0 +@ CHECK: Opcodes [ +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: 0xB0 ; finish +@ CHECK: ] +@ CHECK: } +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.raw +@ CHECK: Entries [ +@ SYM: Opcodes [ +@ SYM: 0xD7 ; pop {d8, d9, d10, d11, d12, d13, d14, d15} +@ SYM: 0xC9 0x02 ; pop {d0, d1, d2} +@ SYM: 0xC8 0x02 ; pop {d16, d17, d18} +@ SYM: 0xC7 0x03 ; pop {wCGR0, wCGR1} +@ SYM: 0xC6 0x02 ; pop {wR0, wR1, wR2} +@ SYM: 0xC2 ; pop {wR10, wR11, wR12} +@ SYM: 0xBA ; pop {d8, d9, d10} +@ SYM: 0xB3 0x12 ; pop {d1, d2, d3} +@ SYM: 0xB2 0x80 0x04 ; vsp = vsp + 2564 +@ SYM: 0xB1 0x01 ; pop {r0} +@ SYM: 0xB0 ; finish +@ SYM: 0xA9 ; pop {r4, r5, lr} +@ SYM: 0xA1 ; pop {r4, r5} +@ SYM: 0x91 ; vsp = r1 +@ SYM: 0x84 0xC0 ; pop {r10, fp, lr} +@ SYM: 0x80 0xC0 ; pop {r10, fp} +@ SYM: 0x80 0x01 ; pop {r4} +@ SYM: 0x81 0x00 ; pop {ip} +@ SYM: 0x80 0x00 ; refuse to unwind +@ SYM: 0x42 ; vsp = vsp - 12 +@ SYM: 0x02 ; vsp = vsp + 12 +@ SYM: ] +@ CHECK: ] +@ CHECK: } +@ CHECK: UnwindIndexTable { +@ CHECK: SectionName: .ARM.exidx.spare +@ CHECK: Entries [ +@ SYM: Opcodes [ +@ SYM: 0xD8 ; spare +@ SYM: 0xD0 ; pop {d8} +@ SYM: 0xCA ; spare +@ SYM: 0xC9 0x00 ; pop {d0} +@ SYM: 0xC8 0x00 ; pop {d16} +@ SYM: 0xC7 0x10 ; spare +@ SYM: 0xC7 0x01 ; pop {wCGR0} +@ SYM: 0xC7 0x00 ; spare +@ SYM: 0xC6 0x00 ; pop {wR0} +@ SYM: 0xC0 ; pop {wR10} +@ SYM: 0xB8 ; pop {d8} +@ SYM: 0xB4 ; spare +@ SYM: 0xB3 0x00 ; pop {d0} +@ SYM: 0xB2 0x00 ; vsp = vsp + 516 +@ SYM: 0xB1 0x10 ; spare +@ SYM: 0xB1 0x01 ; pop {r0} +@ SYM: 0xB1 0x00 ; spare +@ SYM: 0xB0 ; finish +@ SYM: 0xA8 ; pop {r4, lr} +@ SYM: 0xA0 ; pop {r4} +@ SYM: 0x9F ; reserved (WiMMX MOVrr) +@ SYM: 0x9D ; reserved (ARM MOVrr) +@ SYM: 0x91 ; vsp = r1 +@ SYM: 0x88 0x00 ; pop {pc} +@ SYM: 0x80 0x00 ; refuse to unwind +@ SYM: 0x40 ; vsp = vsp - 4 +@ SYM: 0x00 ; vsp = vsp + 4 +@ SYM: ] +@ CHECK: ] +@ CHECK: } +@ CHECK: } + |

