unwind_test_x86_frame.s   [plain text]



# TEST-OPTIONS:  unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -DUSE_COMPACT_UNWIND=1
# TEST-OPTIONS:  unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -DUSE_EH_FRAME=1
# TEST-OPTIONS:  unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -DUSE_COMPACT_UNWIND=1 -DUSE_EH_FRAME=1
# TEST-OPTIONS:  unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -DUSE_EH_FRAME=1 -Wl,-no_compact_unwind


	.data
.globl _unwind_tester_list
_unwind_tester_list:	
	.long	_test_no_reg
	.long	_test_ebx
	.long	_test_esi
	.long	_test_edi
	.long	_test_ebx_esi
	.long	_test_esi_edi
	.long	_test_ebx_edi
	.long	_test_ebx_esi_edi
	.long	_test_edi_esi_ebx
	.long	_test_pad_ebx_edi
	.long	0


	.text

.globl _test_ebx
_test_ebx:
LFB13:
	pushl	%ebp
LCFI2:
	movl	%esp, %ebp
LCFI3:
	pushl	%ebx
LCFI4:
	subl	$20, %esp
LCFI5:
	movl	$0, %ebx
	call	_uwind_to_main
	addl	$20, %esp
	popl	%ebx
	leave
	ret
LFE13:

.globl _test_no_reg
_test_no_reg:
LFB12:
	pushl	%ebp
LCFI6:
	movl	%esp, %ebp
LCFI7:
	subl	$24, %esp
LCFI8:
	call	_uwind_to_main
	leave
	ret
LFE12:

.globl _test_esi
_test_esi:
LFB10:
	pushl	%ebp
LCFI13:
	movl	%esp, %ebp
LCFI14:
	pushl	%esi
LCFI15:
	subl	$20, %esp
LCFI16:
	movl	$0, %esi
	call	_uwind_to_main
	addl	$20, %esp
	popl	%esi
	leave
	ret
LFE10:

.globl _test_edi
_test_edi:
LFB11:
	pushl	%ebp
LCFI9:
	movl	%esp, %ebp
LCFI10:
	pushl	%edi
LCFI11:
	subl	$20, %esp
LCFI12:
	movl	$0, %edi
	call	_uwind_to_main
	addl	$20, %esp
	popl	%edi
	leave
	ret
LFE11:

.globl _test_ebx_esi
_test_ebx_esi:
LFB9:
	pushl	%ebp
LCFI17:
	movl	%esp, %ebp
LCFI18:
	subl	$24, %esp
LCFI19:
	movl	%ebx, -8(%ebp)
LCFI20:
	movl	%esi, -4(%ebp)
LCFI21:
	movl	$0, %ebx
	movl	$0, %esi
	call	_uwind_to_main
	movl	-8(%ebp), %ebx
	movl	-4(%ebp), %esi
	leave
	ret
LFE9:


.globl _test_esi_edi
_test_esi_edi:
LFB8:
	pushl	%ebp
LCFI22:
	movl	%esp, %ebp
LCFI23:
	subl	$24, %esp
LCFI24:
	movl	%esi, -8(%ebp)
LCFI25:
	movl	%edi, -4(%ebp)
LCFI26:
	movl	$0, %edi
	movl	$0, %esi
	call	_uwind_to_main
	movl	-8(%ebp), %esi
	movl	-4(%ebp), %edi
	leave
	ret
LFE8:

.globl _test_ebx_edi
_test_ebx_edi:
LFB91:
	pushl	%ebp
LCFI171:
	movl	%esp, %ebp
LCFI181:
	subl	$24, %esp
LCFI191:
	movl	%ebx, -8(%ebp)
LCFI201:
	movl	%edi, -4(%ebp)
LCFI211:
	movl	$0, %ebx
	movl	$0, %edi
	call	_uwind_to_main
	movl	-8(%ebp), %ebx
	movl	-4(%ebp), %edi
	leave
	ret
LFE91:

.globl _test_ebx_esi_edi
_test_ebx_esi_edi:
LFB7:
	pushl	%ebp
LCFI27:
	movl	%esp, %ebp
LCFI28:
	subl	$40, %esp
LCFI29:
	movl	%ebx, -12(%ebp)
LCFI30:
	movl	%esi, -8(%ebp)
LCFI31:
	movl	%edi, -4(%ebp)
LCFI32:
	movl	$0, %ebx
	movl	$0, %edi
	movl	$0, %esi
	call	_uwind_to_main
	movl	-12(%ebp), %ebx
	movl	-8(%ebp), %esi
	movl	-4(%ebp), %edi
	leave
	ret
LFE7:


.globl _test_edi_esi_ebx
_test_edi_esi_ebx:
LFB7a:
	pushl	%ebp
LCFI27a:
	movl	%esp, %ebp
LCFI28a:
	subl	$40, %esp
LCFI29a:
	movl	%edi, -12(%ebp)
LCFI30a:
	movl	%esi, -8(%ebp)
LCFI31a:
	movl	%ebx, -4(%ebp)
LCFI32a:
	movl	$0, %ebx
	movl	$0, %esi
	movl	$0, %edi
	call	_uwind_to_main
	movl	-12(%ebp), %edi
	movl	-8(%ebp), %esi
	movl	-4(%ebp), %ebx
	leave
	ret
LFE7a:



.globl _test_pad_ebx_edi
_test_pad_ebx_edi:
LFB91a:
	pushl	%ebp
LCFI171a:
	movl	%esp, %ebp
LCFI181a:
	subl	$88, %esp
LCFI191a:
	movl	%ebx, -72(%ebp)
LCFI201a:
	movl	%edi, -68(%ebp)
LCFI211a:
	movl	$0, %ebx
	movl	$0, %edi
	call	_uwind_to_main
	movl	-72(%ebp), %ebx
	movl	-68(%ebp), %edi
	leave
	ret
LFE91a:


#if USE_EH_FRAME
	.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
	.set L$set$0,LECIE1-LSCIE1
	.long L$set$0	# Length of Common Information Entry
LSCIE1:
	.long	0x0	# CIE Identifier Tag
	.byte	0x1	# CIE Version
	.ascii "zR\0"	# CIE Augmentation
	.byte	0x1	# uleb128 0x1; CIE Code Alignment Factor
	.byte	0x7c	# sleb128 -4; CIE Data Alignment Factor
	.byte	0x8	# CIE RA Column
	.byte	0x1	# uleb128 0x1; Augmentation size
	.byte	0x10	# FDE Encoding (pcrel)
	.byte	0xc	# DW_CFA_def_cfa
	.byte	0x5	# uleb128 0x5
	.byte	0x4	# uleb128 0x4
	.byte	0x88	# DW_CFA_offset, column 0x8
	.byte	0x1	# uleb128 0x1
	.align 2
LECIE1:


.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE5:
	.set L$set$6,LEFDE5-LASFDE5
	.long L$set$6	# FDE Length
LASFDE5:
	.long	LASFDE5-EH_frame1	# FDE CIE offset
	.long	LFB12-.	# FDE initial location
	.set L$set$7,LFE12-LFB12
	.long L$set$7	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$8,LCFI6-LFB12
	.long L$set$8
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$9,LCFI7-LCFI6
	.long L$set$9
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.align 2
LEFDE5:


.globl _test_ebx.eh
_test_ebx.eh:
LSFDE3:
	.set L$set$1,LEFDE3-LASFDE3
	.long L$set$1	# FDE Length
LASFDE3:
	.long	LASFDE3-EH_frame1	# FDE CIE offset
	.long	LFB13-.	# FDE initial location
	.set L$set$2,LFE13-LFB13
	.long L$set$2	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$3,LCFI2-LFB13
	.long L$set$3
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$4,LCFI3-LCFI2
	.long L$set$4
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$5,LCFI5-LCFI3
	.long L$set$5
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x3	# uleb128 0x3
	.align 2
LEFDE3:


.globl _test_esi.eh
_test_esi.eh:
LSFDE9:
	.set L$set$15,LEFDE9-LASFDE9
	.long L$set$15	# FDE Length
LASFDE9:
	.long	LASFDE9-EH_frame1	# FDE CIE offset
	.long	LFB10-.	# FDE initial location
	.set L$set$16,LFE10-LFB10
	.long L$set$16	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$17,LCFI13-LFB10
	.long L$set$17
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$18,LCFI14-LCFI13
	.long L$set$18
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$19,LCFI16-LCFI14
	.long L$set$19
	.byte	0x86	# DW_CFA_offset, column 0x6
	.byte	0x3	# uleb128 0x3
	.align 2
LEFDE9:


.globl _test_edi.eh
_test_edi.eh:
LSFDE10:
	.set L$set$15a,LEFDE10-LASFDE10
	.long L$set$15a	# FDE Length
LASFDE10:
	.long	LASFDE10-EH_frame1	# FDE CIE offset
	.long	LFB11-.	# FDE initial location
	.set L$set$16a,LFE11-LFB11
	.long L$set$16a	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$17a,LCFI9-LFB11
	.long L$set$17a
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$18a,LCFI10-LCFI9
	.long L$set$18a
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$19a,LCFI12-LCFI10
	.long L$set$19a
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x3	# uleb128 0x3
	.align 2
LEFDE10:

.globl _test_ebx_esi.eh
_test_ebx_esi.eh:
LSFDE11:
	.set L$set$20,LEFDE11-LASFDE11
	.long L$set$20	# FDE Length
LASFDE11:
	.long	LASFDE11-EH_frame1	# FDE CIE offset
	.long	LFB9-.	# FDE initial location
	.set L$set$21,LFE9-LFB9
	.long L$set$21	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$22,LCFI17-LFB9
	.long L$set$22
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$23,LCFI18-LCFI17
	.long L$set$23
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$24,LCFI21-LCFI18
	.long L$set$24
	.byte	0x86	# DW_CFA_offset, column 0x6
	.byte	0x3	# uleb128 0x3
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x4	# uleb128 0x4
	.align 2
LEFDE11:

.globl _test_esi_edi.eh
_test_esi_edi.eh:
LSFDE13:
	.set L$set$25,LEFDE13-LASFDE13
	.long L$set$25	# FDE Length
LASFDE13:
	.long	LASFDE13-EH_frame1	# FDE CIE offset
	.long	LFB8-.	# FDE initial location
	.set L$set$26,LFE8-LFB8
	.long L$set$26	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$27,LCFI22-LFB8
	.long L$set$27
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$28,LCFI23-LCFI22
	.long L$set$28
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$29,LCFI26-LCFI23
	.long L$set$29
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x3	# uleb128 0x3
	.byte	0x86	# DW_CFA_offset, column 0x6
	.byte	0x4	# uleb128 0x4
	.align 2
LEFDE13:

.globl _test_ebx_edi.eh
_test_ebx_edi.eh:
LSFDE111:
	.set L$set$20a,LEFDE11-LASFDE11
	.long L$set$20a	# FDE Length
LASFDE111:
	.long	LASFDE111-EH_frame1	# FDE CIE offset
	.long	LFB91-.	# FDE initial location
	.set L$set$21a,LFE91-LFB91
	.long L$set$21a	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$22a,LCFI171-LFB91
	.long L$set$22a
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$23a,LCFI181-LCFI171
	.long L$set$23a
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$24a,LCFI211-LCFI181
	.long L$set$24a
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x3	# uleb128 0x3
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x4	# uleb128 0x4
	.align 2
LEFDE111:

.globl _test_ebx_esi_edi.eh
_test_ebx_esi_edi.eh:
LSFDE15:
	.set L$set$30,LEFDE15-LASFDE15
	.long L$set$30	# FDE Length
LASFDE15:
	.long	LASFDE15-EH_frame1	# FDE CIE offset
	.long	LFB7-.	# FDE initial location
	.set L$set$31,LFE7-LFB7
	.long L$set$31	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$32,LCFI27-LFB7
	.long L$set$32
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$33,LCFI28-LCFI27
	.long L$set$33
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$34,LCFI32-LCFI28
	.long L$set$34
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x3	# uleb128 0x3
	.byte	0x86	# DW_CFA_offset, column 0x6
	.byte	0x4	# uleb128 0x4
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x5	# uleb128 0x5
	.align 2
LEFDE15:


.globl _test_edi_esi_ebx.eh
_test_edi_esi_ebx.eh:
LSFDE15a:
	.set L$set$30a,LEFDE15a-LASFDE15a
	.long L$set$30a	# FDE Length
LASFDE15a:
	.long	LASFDE15a-EH_frame1	# FDE CIE offset
	.long	LFB7a-.	# FDE initial location
	.set L$set$31a,LFE7a-LFB7a
	.long L$set$31a	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$32a,LCFI27a-LFB7a
	.long L$set$32a
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$33a,LCFI28a-LCFI27a
	.long L$set$33a
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$34a,LCFI32a-LCFI28a
	.long L$set$34a
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x3	# uleb128 0x3
	.byte	0x86	# DW_CFA_offset, column 0x6
	.byte	0x4	# uleb128 0x4
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x5	# uleb128 0x5
	.align 2
LEFDE15a:


.globl _test_pad_ebx_edi.eh
_test_pad_ebx_edi.eh:
LSFDE111a:
	.set L$set$20b,LEFDE111a-LASFDE111a
	.long L$set$20b	# FDE Length
LASFDE111a:
	.long	LASFDE111a-EH_frame1	# FDE CIE offset
	.long	LFB91a-.	# FDE initial location
	.set L$set$21b,LFE91a-LFB91a
	.long L$set$21b	# FDE address range
	.byte	0x0	# uleb128 0x0; Augmentation size
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$22b,LCFI171a-LFB91a
	.long L$set$22b
	.byte	0xe	# DW_CFA_def_cfa_offset
	.byte	0x8	# uleb128 0x8
	.byte	0x84	# DW_CFA_offset, column 0x4
	.byte	0x2	# uleb128 0x2
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$23b,LCFI181a-LCFI171a
	.long L$set$23b
	.byte	0xd	# DW_CFA_def_cfa_register
	.byte	0x4	# uleb128 0x4
	.byte	0x4	# DW_CFA_advance_loc4
	.set L$set$24b,LCFI211a-LCFI181a
	.long L$set$24b
	.byte	0x87	# DW_CFA_offset, column 0x7
	.byte	0x13	# uleb128 0x13
	.byte	0x83	# DW_CFA_offset, column 0x3
	.byte	0x14	# uleb128 0x14
	.align 2
LEFDE111a:
#endif // USE_EH_FRAME



#if USE_COMPACT_UNWIND
	
	.section __LD,__compact_unwind,regular,debug

	.long	_test_no_reg
	.set L101,LFE13-_test_no_reg
	.long	L101
	.long	0x01000000
	.long	0
	.long	0

	.long	_test_ebx
	.set L102,LFE13-_test_ebx
	.long	L102
	.long	0x01010001
	.long	0
	.long	0

	.long	_test_esi
	.set L103,LFE10-_test_esi
	.long	L103
	.long	0x01010005
	.long	0
	.long	0

	.long	_test_edi
	.set L104,LFE11-_test_edi
	.long	L104
	.long	0x01010004
	.long	0
	.long	0

	.long	_test_ebx_esi
	.set L105,LFE9-_test_ebx_esi
	.long	L105
	.long	0x01020029
	.long	0
	.long	0

	.long	_test_esi_edi
	.set L106,LFE8-_test_esi_edi
	.long	L106
	.long	0x01020025
	.long	0
	.long	0

	.long	_test_ebx_edi
	.set L107,LFE91-_test_ebx_edi
	.long	L107
	.long	0x01020021
	.long	0
	.long	0

	.long	_test_ebx_esi_edi
	.set L108,LFE7-_test_ebx_esi_edi
	.long	L108
	.long	0x01030129
	.long	0
	.long	0

	.long	_test_edi_esi_ebx
	.set L109,LFE7a-_test_edi_esi_ebx
	.long	L109
	.long	0x0103006C
	.long	0
	.long	0

	.long	_test_pad_ebx_edi
	.set L110,LFE91a-_test_pad_ebx_edi
	.long	L110
	.long	0x01120021
	.long	0
	.long	0

#endif // USE_COMPACT_UNWIND


	.subsections_via_symbols