66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| // This test checks the alignment and padding of the unwind info.
 | |
| 
 | |
| // RUN: llvm-mc -triple x86_64-pc-win32 -filetype=obj %s | llvm-readobj -s -sd -sr -u | FileCheck %s
 | |
| 
 | |
| // CHECK:      Sections [
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .xdata
 | |
| // CHECK:          RawDataSize: 8
 | |
| // CHECK:          RelocationCount: 0
 | |
| // CHECK:          Characteristics [
 | |
| // CHECK-NEXT:       ALIGN_4BYTES
 | |
| // CHECK-NEXT:       CNT_INITIALIZED_DATA
 | |
| // CHECK-NEXT:       MEM_READ
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK:          Relocations [
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK:          SectionData (
 | |
| // CHECK-NEXT:       0000: 01000000 00000000
 | |
| // CHECK-NEXT:     )
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK:        Section {
 | |
| // CHECK:          Name: .pdata
 | |
| // CHECK:          RawDataSize: 12
 | |
| // CHECK:          RelocationCount: 3
 | |
| // CHECK:          Characteristics [
 | |
| // CHECK-NEXT:       IMAGE_SCN_ALIGN_4BYTES
 | |
| // CHECK-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA
 | |
| // CHECK-NEXT:       IMAGE_SCN_MEM_READ
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK:          Relocations [
 | |
| // CHECK-NEXT:       [[BeginDisp:0x[A-F0-9]+]] IMAGE_REL_AMD64_ADDR32NB smallFunc
 | |
| // CHECK-NEXT:       [[EndDisp:0x[A-F0-9]+]] IMAGE_REL_AMD64_ADDR32NB smallFunc
 | |
| // CHECK-NEXT:       [[UnwindDisp:0x[A-F0-9]+]] IMAGE_REL_AMD64_ADDR32NB .xdata
 | |
| // CHECK-NEXT:     ]
 | |
| // CHECK:          SectionData (
 | |
| // CHECK-NEXT:       0000: 00000000 01000000 00000000
 | |
| // CHECK-NEXT:     )
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK:        UnwindInformation [
 | |
| // CHECK-NEXT:     RuntimeFunction {
 | |
| // CHECK-NEXT:     StartAddress: smallFunc {{(\+0x[A-F0-9]+ )?}}([[BeginDisp]])
 | |
| // CHECK-NEXT:     EndAddress: smallFunc {{(\+0x[A-F0-9]+ )?}}([[EndDisp]])
 | |
| // CHECK-NEXT:     UnwindInfoAddress: .xdata {{(\+0x[A-F0-9]+ )?}}([[UnwindDisp]])
 | |
| // CHECK-NEXT:     UnwindInfo {
 | |
| // CHECK-NEXT:       Version: 1
 | |
| // CHECK-NEXT:       Flags [
 | |
| // CHECK-NEXT:       ]
 | |
| // CHECK-NEXT:       PrologSize: 0
 | |
| // CHECK-NEXT:       FrameRegister: -
 | |
| // CHECK-NEXT:       FrameOffset: -
 | |
| // CHECK-NEXT:       UnwindCodeCount: 0
 | |
| // CHECK-NEXT:       UnwindCodes [
 | |
| // CHECK-NEXT:       ]
 | |
| // CHECK-NEXT:     }
 | |
| // CHECK-NEXT:   }
 | |
| // CHECK-NEXT: ]
 | |
| 
 | |
| // Generate the minimal unwind info.
 | |
| // It contains only the version set to 1. All other bytes are 0.
 | |
|     .globl smallFunc
 | |
|     .def smallFunc; .scl 2; .type 32; .endef
 | |
|     .seh_proc smallFunc
 | |
| smallFunc:
 | |
|     ret
 | |
|     .seh_endproc
 |