You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			255 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			255 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | @ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s
 | ||
|  | @ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \
 | ||
|  | @ RUN:   | llvm-readobj -arm-attributes | FileCheck %s --check-prefix=CHECK-OBJ
 | ||
|  | 
 | ||
|  |         .syntax unified
 | ||
|  |         .thumb | ||
|  | 
 | ||
|  |         .eabi_attribute Tag_conformance, "2.09" | ||
|  | @ CHECK: .eabi_attribute 67, "2.09"
 | ||
|  | @ Tag_conformance should be be emitted first in a file-scope
 | ||
|  | @ sub-subsection of the first public subsection of the attributes
 | ||
|  | @ section. 2.3.7.4 of ABI Addenda.
 | ||
|  | @ CHECK-OBJ:        Tag: 67
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: conformance
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: 2.09
 | ||
|  | 	.eabi_attribute Tag_CPU_raw_name, "Cortex-A9" | ||
|  | @ CHECK: .eabi_attribute 4, "Cortex-A9"
 | ||
|  | @ CHECK-OBJ:        Tag: 4
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: CPU_raw_name
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: Cortex-A9
 | ||
|  | 	.eabi_attribute Tag_CPU_name, "cortex-a9" | ||
|  | @ CHECK: .cpu cortex-a9
 | ||
|  | @ CHECK-OBJ:        Tag: 5
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: CPU_name
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: cortex-a9
 | ||
|  | 	.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_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
 | ||
|  | 	.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, 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, 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_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, 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, 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, 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, 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_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, 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_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, 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, 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, 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, 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, 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, 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, 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_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, "aeabi" | ||
|  | @ CHECK: .eabi_attribute 32, 1, "aeabi"
 | ||
|  | @ CHECK-OBJ:        Tag: 32
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: 1, aeabi
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: compatibility
 | ||
|  | @ CHECK-OBJ-NEXT:   Description: AEABI Conformant
 | ||
|  | 	.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 Permitte
 | ||
|  | 	.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_nodefaults, 0 | ||
|  | @ CHECK: .eabi_attribute 64, 0
 | ||
|  | @ CHECK-OBJ:        Tag: 64
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: 0
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: nodefaults
 | ||
|  | @ CHECK-OBJ-NEXT:   Description: Unspecified Tags UNDEFINED
 | ||
|  | 	.eabi_attribute Tag_also_compatible_with, "gnu" | ||
|  | @ CHECK: .eabi_attribute 65, "gnu"
 | ||
|  | @ CHECK-OBJ:        Tag: 65
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: also_compatible_with
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: gnu
 | ||
|  | 	.eabi_attribute Tag_T2EE_use, 0 | ||
|  | @ CHECK: .eabi_attribute 66, 0
 | ||
|  | @ CHECK-OBJ:        Tag: 66
 | ||
|  | @ CHECK-OBJ-NEXT:   Value: 0
 | ||
|  | @ CHECK-OBJ-NEXT:   TagName: T2EE_use
 | ||
|  | @ 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
 | ||
|  | 
 | ||
|  | @ ===--- Compatibility Checks ---===
 | ||
|  | 
 | ||
|  | 	.eabi_attribute Tag_ABI_align8_needed, 1 | ||
|  | @ CHECK: .eabi_attribute 24, 1
 | ||
|  | 	.eabi_attribute Tag_ABI_align8_preserved, 2 | ||
|  | @ CHECK: .eabi_attribute 25, 2
 | ||
|  | 
 | ||
|  | @ ===--- GNU AS Compatibility Checks ---===
 | ||
|  | 
 | ||
|  | 	.eabi_attribute 2 * 2 + 1, "cortex-a9" | ||
|  | @ CHECK: .cpu cortex-a9
 | ||
|  | 	.eabi_attribute 2 * 2 + 2, 5 * 2 | ||
|  | @ CHECK: .eabi_attribute 6, 10
 |