You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			282 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			282 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s | FileCheck %s
 | |
| // RUN: llvm-mc -filetype=asm -triple x86_64-pc-linux-gnu %s -o - |  FileCheck %s --check-prefix=ASM
 | |
| 
 | |
| // Test that these names are accepted.
 | |
| 
 | |
| .section	.note.GNU-stack,"",@progbits
 | |
| .section	.note.GNU-stack2,"",%progbits
 | |
| .section	.note.GNU-,"",@progbits
 | |
| .section	-.note.GNU,"","progbits"
 | |
| .section	src/stack.c,"",@progbits
 | |
| .section	~!@$%^&*()_-+={[}]|\\:<>,"",@progbits
 | |
| 
 | |
| // CHECK: Name: .note.GNU-stack
 | |
| // CHECK: Name: .note.GNU-stack2
 | |
| // CHECK: Name: .note.GNU-
 | |
| // CHECK: Name: -.note.GNU
 | |
| // CHECK: Name: src/stack.c
 | |
| // CHECK: Name: ~!@$%^&*()_-+={[}]|\\:<>
 | |
| 
 | |
| // Test that the defaults are used
 | |
| 
 | |
| .section	.init
 | |
| .section	.fini
 | |
| .section	.rodata
 | |
| .section	zed, ""
 | |
| 
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .init
 | |
| // CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_EXECINSTR
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT:   Section {
 | |
| // CHECK-NEXT:     Index:
 | |
| // CHECK-NEXT:     Name: .fini
 | |
| // CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_EXECINSTR
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT:   Section {
 | |
| // CHECK-NEXT:     Index:
 | |
| // CHECK-NEXT:     Name: .rodata
 | |
| // CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT:   Section {
 | |
| // CHECK-NEXT:     Index:
 | |
| // CHECK-NEXT:     Name: zed
 | |
| // CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| 
 | |
| .section	.note.test,"",@note
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .note.test
 | |
| // CHECK-NEXT:     Type: SHT_NOTE
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| 
 | |
| // Test that we can parse these
 | |
| foo:
 | |
| bar:
 | |
| .section        .text.foo,"axG",@progbits,foo,comdat
 | |
| .section        .text.bar,"axMG",@progbits,42,bar,comdat
 | |
| 
 | |
| // Test that the default values are not used
 | |
| 
 | |
| .section .eh_frame,"a",@unwind
 | |
| 
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .eh_frame
 | |
| // CHECK-NEXT:     Type: SHT_X86_64_UNWIND
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK-NEXT:     Address: 0x0
 | |
| // CHECK-NEXT:     Offset:
 | |
| // CHECK-NEXT:     Size: 0
 | |
| // CHECK-NEXT:     Link: 0
 | |
| // CHECK-NEXT:     Info: 0
 | |
| // CHECK-NEXT:     AddressAlignment: 1
 | |
| // CHECK-NEXT:     EntrySize: 0
 | |
| // CHECK-NEXT:   }
 | |
| 
 | |
| .section .excluded,"e",@progbits
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Name: .excluded
 | |
| // CHECK-NEXT:   Type: SHT_PROGBITS (0x1)
 | |
| // CHECK-NEXT:   Flags [ (0x80000000)
 | |
| // CHECK-NEXT:     SHF_EXCLUDE (0x80000000)
 | |
| // CHECK-NEXT:   ]
 | |
| // CHECK-NEXT:   Address: 0x0
 | |
| // CHECK-NEXT:   Offset:
 | |
| // CHECK-NEXT:   Size: 0
 | |
| // CHECK-NEXT:   Link: 0
 | |
| // CHECK-NEXT:   Info: 0
 | |
| // CHECK-NEXT:   AddressAlignment: 1
 | |
| // CHECK-NEXT:   EntrySize: 0
 | |
| // CHECK-NEXT: }
 | |
| 
 | |
| // Test that we handle the strings like gas
 | |
| .section bar-"foo"
 | |
| .section "fooo"
 | |
| 
 | |
| 
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: bar-"foo"
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: fooo
 | |
| 
 | |
| // Test SHF_LINK_ORDER
 | |
| 
 | |
| .section .shf_metadata_target1, "a"
 | |
|         .quad 0
 | |
| .section .shf_metadata_target2, "a", @progbits, unique, 1
 | |
| .Lshf_metadata_target2_1:
 | |
|         .quad 0
 | |
| .section .shf_metadata_target2, "a", @progbits, unique, 2
 | |
| .Lshf_metadata_target2_2:
 | |
|         .quad 0
 | |
| 
 | |
| .section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1
 | |
| .section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2
 | |
| .section .shf_metadata3,"ao",@progbits,.shf_metadata_target1
 | |
| // ASM: .section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1
 | |
| // ASM: .section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2
 | |
| // ASM: .section .shf_metadata3,"ao",@progbits,.shf_metadata_target1
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Index: 22
 | |
| // CHECK-NEXT:   Name: .shf_metadata_target1
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Index: 23
 | |
| // CHECK-NEXT:   Name: .shf_metadata_target2
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Index: 24
 | |
| // CHECK-NEXT:   Name: .shf_metadata_target2
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Name: .shf_metadata1
 | |
| // CHECK-NEXT:   Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:   Flags [
 | |
| // CHECK-NEXT:     SHF_ALLOC
 | |
| // CHECK-NEXT:     SHF_LINK_ORDER
 | |
| // CHECK-NEXT:   ]
 | |
| // CHECK-NEXT:   Address:
 | |
| // CHECK-NEXT:   Offset:
 | |
| // CHECK-NEXT:   Size:
 | |
| // CHECK-NEXT:   Link:    23
 | |
| // CHECK-NEXT:   Info:    0
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Name: .shf_metadata2
 | |
| // CHECK-NEXT:   Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:   Flags [
 | |
| // CHECK-NEXT:     SHF_ALLOC
 | |
| // CHECK-NEXT:     SHF_LINK_ORDER
 | |
| // CHECK-NEXT:   ]
 | |
| // CHECK-NEXT:   Address:
 | |
| // CHECK-NEXT:   Offset:
 | |
| // CHECK-NEXT:   Size:
 | |
| // CHECK-NEXT:   Link:    24
 | |
| // CHECK-NEXT:   Info:    0
 | |
| 
 | |
| // CHECK:      Section {
 | |
| // CHECK:        Name: .shf_metadata3
 | |
| // CHECK-NEXT:   Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:   Flags [
 | |
| // CHECK-NEXT:     SHF_ALLOC
 | |
| // CHECK-NEXT:     SHF_LINK_ORDER
 | |
| // CHECK-NEXT:   ]
 | |
| // CHECK-NEXT:   Address:
 | |
| // CHECK-NEXT:   Offset:
 | |
| // CHECK-NEXT:   Size:
 | |
| // CHECK-NEXT:   Link:    22
 | |
| // CHECK-NEXT:   Info:    0
 | |
| 
 | |
| .section	.text.foo
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .text.foo
 | |
| // CHECK-NEXT:     Type: SHT_PROGBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_EXECINSTR
 | |
| // CHECK-NEXT:     ]
 | |
| 
 | |
| .section .bss
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .bss
 | |
| // CHECK-NEXT:     Type: SHT_NOBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_WRITE
 | |
| // CHECK-NEXT:     ]
 | |
| 
 | |
| .section .bss.foo
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .bss.foo
 | |
| // CHECK-NEXT:     Type: SHT_NOBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_WRITE
 | |
| // CHECK-NEXT:     ]
 | |
| 
 | |
| .section .tbss
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .tbss
 | |
| // CHECK-NEXT:     Type: SHT_NOBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_TLS
 | |
| // CHECK-NEXT:       SHF_WRITE
 | |
| // CHECK-NEXT:     ]
 | |
| 
 | |
| .section .tbss.foo
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .tbss.foo
 | |
| // CHECK-NEXT:     Type: SHT_NOBITS
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_ALLOC
 | |
| // CHECK-NEXT:       SHF_TLS
 | |
| // CHECK-NEXT:       SHF_WRITE
 | |
| // CHECK-NEXT:     ]
 | |
| 
 | |
| // Test SHT_LLVM_ODRTAB
 | |
| 
 | |
| .section .odrtab,"e",@llvm_odrtab
 | |
| // ASM: .section .odrtab,"e",@llvm_odrtab
 | |
| 
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .odrtab
 | |
| // CHECK-NEXT:     Type: SHT_LLVM_ODRTAB
 | |
| // CHECK-NEXT:     Flags [
 | |
| // CHECK-NEXT:       SHF_EXCLUDE
 | |
| // CHECK-NEXT:     ]
 |