Import test suite from libunwind-35.1

This commit is contained in:
Landon Fuller 2013-05-20 17:07:01 -04:00
Родитель d8b8956c1f
Коммит 17e95e4106
37 изменённых файлов: 5740 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,24 @@
These test cases where extracted from Apple's libunwind-35.1, where they
are used to validate Apple's compact frame and dwarf unwinding implementation.
A custom build script (build.sh) may be used to regenerate the test binaries.
The test cases themselves are licensed under libunwind's license:
Copyright (c) 2008-2011 Apple Inc. All rights reserved.
This file contains Original Code and/or Modifications of Original Code
as defined in and that are subject to the Apple Public Source License
Version 2.0 (the 'License'). You may not use this file except in
compliance with the License. Please obtain a copy of the License at
http://www.opensource.apple.com/apsl/ and read it before using this
file.
The Original Code and all software distributed under the License are
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
Please see the License for the specific language governing rights and
limitations under the License.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,54 @@
#!/bin/sh
# -----------------------------------------------------------------------
# Copyright (c) 2010-2013, Plausible Labs Cooperative, Inc.
#
# Author: Landon Fuller <landonf@plausible.coop>
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# ``Software''), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
# -----------------------------------------------------------------------
process() {
local file=$1
local opts=`echo $2`
local count=$3
eval cc -o bins/tbin.$file.${count} ${file} ${opts}
}
main() {
local ifs_bak=$IFS
local ifs_nl="
"
IFS=$ifs_nl
local count="1"
for opt in `grep -H "TEST-OPTIONS:" *.s`; do
IFS=$ifs_back
local fname=`echo "${opt}" | awk -F : '{print $1}'`
local opts=`echo "${opt}" | cut -d ' ' -f 3-`
process "$fname" "${opts}" "${count}"
IFS=$ifs_nl
count=`expr $count + 1`
done
}
main

Просмотреть файл

@ -0,0 +1,46 @@
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include "libunwind.h"
extern int unwind_tester(void*);
extern void* unwind_tester_list[];
int main()
{
// loop over all function pointers in unwind_tester_list
// and call unwind_tester() on each one. If it returns
// non-zero, then that test failed.
void** p;
for(p=unwind_tester_list; *p != NULL; ++p) {
//fprintf(stderr, "unwind_tester(%p)\n", *p);
if ( unwind_tester(*p) )
return 1;
}
return 0;
}
// called by test function
// we unwind through the test function
// and resume at caller (unwind_tester)
void uwind_to_main()
{
unw_cursor_t cursor;
unw_context_t uc;
unw_word_t offset;
unw_getcontext(&uc);
unw_init_local(&cursor, &uc);
if ( unw_step(&cursor) > 0 ) {
// now in test function
if ( unw_step(&cursor) > 0 ) {
// now in unwind_tester
unw_resume(&cursor);
}
}
// error if we got here
exit(1);
}

Просмотреть файл

@ -0,0 +1,104 @@
#
# This is a generic function to test that restoring registers during unwinding work correctly.
#
.text
.globl _unwind_tester
_unwind_tester:
LFB2:
pushl %ebp
LCFI0:
movl %esp, %ebp
LCFI1:
subl $56, %esp
LCFI2:
movl %ebx, -12(%ebp)
LCFI3:
movl %esi, -8(%ebp)
LCFI4:
movl %edi, -4(%ebp)
LCFI5:
# load magic values into non-volatile registers
movl $0x12344321, %ebx
movl $0x56788765, %esi
movl $0xABCDDCBA, %edi
# call test function which will invoke unwinder which "returns" here
call *8(%ebp)
# verify that non-volatile registers still contain magic values
cmpl $0x12344321, %ebx
jne L2
cmpl $0x56788765, %esi
jne L2
cmpl $0xABCDDCBA, %edi
jne L2
movl $0, %eax
jmp L3
L2: movl $1, %eax
L3:
movl -12(%ebp), %ebx
movl -8(%ebp), %esi
movl -4(%ebp), %edi
leave
ret
LFE2:
.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 _unwind_tester.eh
_unwind_tester.eh:
LSFDE1:
.set L$set$1,LEFDE1-LASFDE1
.long L$set$1 # FDE Length
LASFDE1:
.long LASFDE1-EH_frame1 # FDE CIE offset
.long LFB2-. # FDE initial location
.set L$set$2,LFE2-LFB2
.long L$set$2 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$3,LCFI0-LFB2
.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,LCFI1-LCFI0
.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-LCFI1
.long L$set$5
.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
LEFDE1:

Просмотреть файл

@ -0,0 +1,125 @@
#
# This is a generic function to test that restoring registers during unwinding work correctly.
#
.text
.globl _unwind_tester
_unwind_tester:
LFB3:
pushq %rbp
LCFI45:
movq %rsp, %rbp
LCFI46:
movq %rbx, -40(%rbp)
LCFI47:
movq %r12, -32(%rbp)
LCFI48:
movq %r13, -24(%rbp)
LCFI49:
movq %r14, -16(%rbp)
LCFI50:
movq %r15, -8(%rbp)
LCFI51:
subq $48, %rsp
LCFI52:
# load magic values into non-volatile registers
movq $0x1234567887654321, %rbx
movq $0x02468ACEECA86420, %r12
movq $0x13579BDFFDB97531, %r13
movq $0x1122334455667788, %r14
movq $0x0022446688AACCEE, %r15
# call test function which will invoke unwinder which "returns" here
call *%rdi
# verify that non-volatile registers still contain magic values
movq $0x1234567887654321, %rax
cmpq %rax, %rbx
jne L2
movq $0x02468ACEECA86420, %rax
cmpq %rax, %r12
jne L2
movq $0x13579BDFFDB97531, %rax
cmpq %rax, %r13
jne L2
movq $0x1122334455667788, %rax
cmpq %rax, %r14
jne L2
movq $0x0022446688AACCEE, %rax
cmpq %rax, %r15
jne L2
movl $0, %eax
jmp L3
L2: movl $1, %eax
L3:
movq -40(%rbp), %rbx
movq -32(%rbp), %r12
movq -24(%rbp), %r13
movq -16(%rbp), %r14
movq -8(%rbp), %r15
leave
ret
LFE3:
.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 0x78 # sleb128 -8; CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.byte 0x1 # uleb128 0x1; Augmentation size
.byte 0x10 # FDE Encoding (pcrel)
.byte 0xc # DW_CFA_def_cfa
.byte 0x7 # uleb128 0x7
.byte 0x8 # uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.byte 0x1 # uleb128 0x1
.align 3
LECIE1:
.globl _unwind_tester.eh
_unwind_tester.eh:
LSFDE23:
.set L$set$52,LEFDE23-LASFDE23
.long L$set$52 # FDE Length
LASFDE23:
.long LASFDE23-EH_frame1 # FDE CIE offset
.quad LFB3-. # FDE initial location
.set L$set$53,LFE3-LFB3
.quad L$set$53 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$54,LCFI45-LFB3
.long L$set$54
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$55,LCFI46-LCFI45
.long L$set$55
.byte 0xd # DW_CFA_def_cfa_register
.byte 0x6 # uleb128 0x6
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$56,LCFI52-LCFI46
.long L$set$56
.byte 0x8f # DW_CFA_offset, column 0xf
.byte 0x3 # uleb128 0x3
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x4 # uleb128 0x4
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x5 # uleb128 0x5
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x6 # uleb128 0x6
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x7 # uleb128 0x7
.align 3
LEFDE23:

Просмотреть файл

@ -0,0 +1,599 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64
.data
.globl _unwind_tester_list
_unwind_tester_list:
.quad _test_no_reg
.quad _test_rbx
.quad _test_rbx_r12
.quad _test_rbx_r14
.quad _test_rbx_r12_r13
.quad _test_rbx_r12_r13_r14
.quad _test_r14_r13_r12_rbx
.quad _test_rbx_r12_r13_r14_r15
.quad _test_r13_rbx_r14_r15_r12
.quad 0
.text
LFE14:
.globl _test_no_reg
_test_no_reg:
LFB13:
pushq %rbp
LCFI2:
movq %rsp, %rbp
LCFI3:
call _uwind_to_main
leave
ret
LFE13:
.globl _test_rbx
_test_rbx:
LFB10:
pushq %rbp
LCFI8:
movq %rsp, %rbp
LCFI9:
pushq %rbx
LCFI10:
subq $8, %rsp
LCFI11:
movq $0, %rbx
call _uwind_to_main
addq $8, %rsp
popq %rbx
leave
ret
LFE10:
.globl _test_rbx_r12
_test_rbx_r12:
LFB8:
pushq %rbp
LCFI16:
movq %rsp, %rbp
LCFI17:
movq %rbx, -16(%rbp)
LCFI18:
movq %r12, -8(%rbp)
LCFI19:
subq $16, %rsp
LCFI20:
movq $0, %rbx
movq $0, %r12
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
leave
ret
LFE8:
.globl _test_rbx_r14
_test_rbx_r14:
LFB8a:
pushq %rbp
LCFI16a:
movq %rsp, %rbp
LCFI17a:
movq %rbx, -16(%rbp)
LCFI18a:
movq %r14, -8(%rbp)
LCFI19a:
subq $16, %rsp
LCFI20a:
movq $0, %rbx
movq $0, %r14
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r14
leave
ret
LFE8a:
.globl _test_rbx_r12_r13
_test_rbx_r12_r13:
LFB6:
pushq %rbp
LCFI26:
movq %rsp, %rbp
LCFI27:
movq %rbx, -24(%rbp)
LCFI28:
movq %r12, -16(%rbp)
LCFI29:
movq %r13, -8(%rbp)
LCFI30:
subq $32, %rsp
LCFI31:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq -24(%rbp), %rbx
movq -16(%rbp), %r12
movq -8(%rbp), %r13
leave
ret
LFE6:
.globl _test_rbx_r12_r13_r14
_test_rbx_r12_r13_r14:
LFB4:
pushq %rbp
LCFI38:
movq %rsp, %rbp
LCFI39:
movq %rbx, -32(%rbp)
LCFI40:
movq %r12, -24(%rbp)
LCFI41:
movq %r13, -16(%rbp)
LCFI42:
movq %r14, -8(%rbp)
LCFI43:
subq $32, %rsp
LCFI44:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
movq 16(%rsp), %r13
movq 24(%rsp), %r14
leave
ret
LFE4:
.globl _test_r14_r13_r12_rbx
_test_r14_r13_r12_rbx:
LFB4a:
pushq %rbp
LCFI38a:
movq %rsp, %rbp
LCFI39a:
movq %r14, -32(%rbp)
LCFI40a:
movq %r13, -24(%rbp)
LCFI41a:
movq %r12, -16(%rbp)
LCFI42a:
movq %rbx, -8(%rbp)
LCFI43a:
subq $32, %rsp
LCFI44a:
movq $0, %r14
movq $0, %r13
movq $0, %r12
movq $0, %rbx
call _uwind_to_main
movq -32(%rbp), %r14
movq -24(%rbp), %r13
movq -16(%rbp), %r12
movq -8(%rbp), %rbx
leave
ret
LFE4a:
.globl _test_rbx_r12_r13_r14_r15
_test_rbx_r12_r13_r14_r15:
LFB3:
pushq %rbp
LCFI45:
movq %rsp, %rbp
LCFI46:
movq %rbx, -40(%rbp)
LCFI47:
movq %r12, -32(%rbp)
LCFI48:
movq %r13, -24(%rbp)
LCFI49:
movq %r14, -16(%rbp)
LCFI50:
movq %r15, -8(%rbp)
LCFI51:
subq $48, %rsp
LCFI52:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq -40(%rbp), %rbx
movq -32(%rbp), %r12
movq -24(%rbp), %r13
movq -16(%rbp), %r14
movq -8(%rbp), %r15
leave
ret
LFE3:
.globl _test_r13_rbx_r14_r15_r12
_test_r13_rbx_r14_r15_r12:
LFB3a:
pushq %rbp
LCFI45a:
movq %rsp, %rbp
LCFI46a:
movq %r13, -40(%rbp)
LCFI47a:
movq %rbx, -32(%rbp)
LCFI48a:
movq %r14, -24(%rbp)
LCFI49a:
movq %r15, -16(%rbp)
LCFI50a:
movq %r12, -8(%rbp)
LCFI51a:
subq $48, %rsp
LCFI52a:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq -40(%rbp), %r13
movq -32(%rbp), %rbx
movq -24(%rbp), %r14
movq -16(%rbp), %r15
movq -8(%rbp), %r12
leave
ret
LFE3a:
.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
.set L$set$0,LECIE1-LSCIE1
.long L$set$0
LSCIE1:
.long 0x0
.byte 0x1
.ascii "zR\0"
.byte 0x1
.byte 0x78
.byte 0x10
.byte 0x1
.byte 0x10
.byte 0xc
.byte 0x7
.byte 0x8
.byte 0x90 // DW_CFA_offset(ret_addr, -8)
.byte 0x1
.byte 0x90 // DW_CFA_offset(ret_addr, -8)
.byte 0x1 // this repeat is idiom that means don't create compact unwind info
.align 3
LECIE1:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE3:
.set L$set$5,LEFDE3-LASFDE3
.long L$set$5
LASFDE3:
.long LASFDE3-EH_frame1
.quad LFB13-.
.set L$set$6,LFE13-LFB13
.quad L$set$6
.byte 0x0
.byte 0x4
.set L$set$7,LCFI2-LFB13
.long L$set$7
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$8,LCFI3-LCFI2
.long L$set$8
.byte 0xd
.byte 0x6
.align 3
LEFDE3:
.globl _test_rbx.eh
_test_rbx.eh:
LSFDE9:
.set L$set$17,LEFDE9-LASFDE9
.long L$set$17
LASFDE9:
.long LASFDE9-EH_frame1
.quad LFB10-.
.set L$set$18,LFE10-LFB10
.quad L$set$18
.byte 0x0
.byte 0x4
.set L$set$19,LCFI8-LFB10
.long L$set$19
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$20,LCFI9-LCFI8
.long L$set$20
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$21,LCFI11-LCFI9
.long L$set$21
.byte 0x83
.byte 0x3
.align 3
LEFDE9:
.globl _test_rbx_r12.eh
_test_rbx_r12.eh:
LSFDE13:
.set L$set$27,LEFDE13-LASFDE13
.long L$set$27
LASFDE13:
.long LASFDE13-EH_frame1
.quad LFB8-.
.set L$set$28,LFE8-LFB8
.quad L$set$28
.byte 0x0
.byte 0x4
.set L$set$29,LCFI16-LFB8
.long L$set$29
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$30,LCFI17-LCFI16
.long L$set$30
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$31,LCFI20-LCFI17
.long L$set$31
.byte 0x8c
.byte 0x3
.byte 0x83
.byte 0x4
.align 3
LEFDE13:
.globl _test_rbx_r14.eh
_test_rbx_r14.eh:
LSFDE13a:
.set L$set$27a,LEFDE13a-LASFDE13a
.long L$set$27a
LASFDE13a:
.long LASFDE13a-EH_frame1
.quad LFB8a-.
.set L$set$28a,LFE8a-LFB8a
.quad L$set$28a
.byte 0x0
.byte 0x4
.set L$set$29a,LCFI16a-LFB8a
.long L$set$29a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$30a,LCFI17a-LCFI16a
.long L$set$30a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$31a,LCFI20a-LCFI17a
.long L$set$31a
.byte 0x8e
.byte 0x3
.byte 0x83
.byte 0x4
.align 3
LEFDE13a:
.globl _test_rbx_r12_r13.eh
_test_rbx_r12_r13.eh:
LSFDE17:
.set L$set$37,LEFDE17-LASFDE17
.long L$set$37
LASFDE17:
.long LASFDE17-EH_frame1
.quad LFB6-.
.set L$set$38,LFE6-LFB6
.quad L$set$38
.byte 0x0
.byte 0x4
.set L$set$39,LCFI26-LFB6
.long L$set$39
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$40,LCFI27-LCFI26
.long L$set$40
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$41,LCFI31-LCFI27
.long L$set$41
.byte 0x8d
.byte 0x3
.byte 0x8c
.byte 0x4
.byte 0x83
.byte 0x5
.align 3
LEFDE17:
.globl _test_rbx_r12_r13_r14.eh
_test_rbx_r12_r13_r14.eh:
LSFDE21:
.set L$set$47,LEFDE21-LASFDE21
.long L$set$47
LASFDE21:
.long LASFDE21-EH_frame1
.quad LFB4-.
.set L$set$48,LFE4-LFB4
.quad L$set$48
.byte 0x0
.byte 0x4
.set L$set$49,LCFI38-LFB4
.long L$set$49
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$50,LCFI39-LCFI38
.long L$set$50
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$51,LCFI44-LCFI39
.long L$set$51
.byte 0x8e
.byte 0x3
.byte 0x8d
.byte 0x4
.byte 0x8c
.byte 0x5
.byte 0x83
.byte 0x6
.align 3
LEFDE21:
.globl _test_r14_r13_r12_rbx.eh
_test_r14_r13_r12_rbx.eh:
LSFDE21a:
.set L$set$47a,LEFDE21a-LASFDE21a
.long L$set$47a
LASFDE21a:
.long LASFDE21a-EH_frame1
.quad LFB4a-.
.set L$set$48a,LFE4a-LFB4a
.quad L$set$48a
.byte 0x0
.byte 0x4
.set L$set$49a,LCFI38a-LFB4a
.long L$set$49a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$50a,LCFI39a-LCFI38a
.long L$set$50a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$51a,LCFI44a-LCFI39a
.long L$set$51a
.byte 0x8e
.byte 0x6
.byte 0x8d
.byte 0x5
.byte 0x8c
.byte 0x4
.byte 0x83
.byte 0x3
.align 3
LEFDE21a:
.globl _test_rbx_r12_r13_r14_r15.eh
_test_rbx_r12_r13_r14_r15.eh:
LSFDE23:
.set L$set$52,LEFDE23-LASFDE23
.long L$set$52
LASFDE23:
.long LASFDE23-EH_frame1
.quad LFB3-.
.set L$set$53,LFE3-LFB3
.quad L$set$53
.byte 0x0
.byte 0x4
.set L$set$54,LCFI45-LFB3
.long L$set$54
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$55,LCFI46-LCFI45
.long L$set$55
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$56,LCFI52-LCFI46
.long L$set$56
.byte 0x8f
.byte 0x3
.byte 0x8e
.byte 0x4
.byte 0x8d
.byte 0x5
.byte 0x8c
.byte 0x6
.byte 0x83
.byte 0x7
.align 3
LEFDE23:
.globl _test_r13_rbx_r14_r15_r12.eh
_test_r13_rbx_r14_r15_r12.eh:
LSFDE23a:
.set L$set$52a,LEFDE23a-LASFDE23a
.long L$set$52a
LASFDE23a:
.long LASFDE23a-EH_frame1
.quad LFB3a-.
.set L$set$53a,LFE3a-LFB3a
.quad L$set$53a
.byte 0x0
.byte 0x4
.set L$set$54a,LCFI45a-LFB3a
.long L$set$54a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$55a,LCFI46a-LCFI45a
.long L$set$55a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$56a,LCFI52a-LCFI46a
.long L$set$56a
.byte 0x8c
.byte 0x3
.byte 0x8f
.byte 0x4
.byte 0x8e
.byte 0x5
.byte 0x83
.byte 0x6
.byte 0x8d
.byte 0x7
.align 3
LEFDE23a:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,674 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -DUSE_COMPACT_UNWIND=1
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -DUSE_EH_FRAME=1
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -DUSE_COMPACT_UNWIND=1 -DUSE_EH_FRAME=1
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -DUSE_EH_FRAME=1 -Wl,-no_compact_unwind
.data
.globl _unwind_tester_list
_unwind_tester_list:
.quad _test_no_reg
.quad _test_rbx
.quad _test_rbx_r12
.quad _test_rbx_r14
.quad _test_rbx_r12_r13
.quad _test_rbx_r12_r13_r14
.quad _test_r14_r13_r12_rbx
.quad _test_rbx_r12_r13_r14_r15
.quad _test_r13_rbx_r14_r15_r12
.quad 0
.text
LFE14:
.globl _test_no_reg
_test_no_reg:
LFB13:
pushq %rbp
LCFI2:
movq %rsp, %rbp
LCFI3:
call _uwind_to_main
leave
ret
LFE13:
.globl _test_rbx
_test_rbx:
LFB10:
pushq %rbp
LCFI8:
movq %rsp, %rbp
LCFI9:
pushq %rbx
LCFI10:
subq $8, %rsp
LCFI11:
movq $0, %rbx
call _uwind_to_main
addq $8, %rsp
popq %rbx
leave
ret
LFE10:
.globl _test_rbx_r12
_test_rbx_r12:
LFB8:
pushq %rbp
LCFI16:
movq %rsp, %rbp
LCFI17:
movq %rbx, -16(%rbp)
LCFI18:
movq %r12, -8(%rbp)
LCFI19:
subq $16, %rsp
LCFI20:
movq $0, %rbx
movq $0, %r12
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
leave
ret
LFE8:
.globl _test_rbx_r14
_test_rbx_r14:
LFB8a:
pushq %rbp
LCFI16a:
movq %rsp, %rbp
LCFI17a:
movq %rbx, -16(%rbp)
LCFI18a:
movq %r14, -8(%rbp)
LCFI19a:
subq $16, %rsp
LCFI20a:
movq $0, %rbx
movq $0, %r14
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r14
leave
ret
LFE8a:
.globl _test_rbx_r12_r13
_test_rbx_r12_r13:
LFB6:
pushq %rbp
LCFI26:
movq %rsp, %rbp
LCFI27:
movq %rbx, -24(%rbp)
LCFI28:
movq %r12, -16(%rbp)
LCFI29:
movq %r13, -8(%rbp)
LCFI30:
subq $32, %rsp
LCFI31:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq -24(%rbp), %rbx
movq -16(%rbp), %r12
movq -8(%rbp), %r13
leave
ret
LFE6:
.globl _test_rbx_r12_r13_r14
_test_rbx_r12_r13_r14:
LFB4:
pushq %rbp
LCFI38:
movq %rsp, %rbp
LCFI39:
movq %rbx, -32(%rbp)
LCFI40:
movq %r12, -24(%rbp)
LCFI41:
movq %r13, -16(%rbp)
LCFI42:
movq %r14, -8(%rbp)
LCFI43:
subq $32, %rsp
LCFI44:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
movq 16(%rsp), %r13
movq 24(%rsp), %r14
leave
ret
LFE4:
.globl _test_r14_r13_r12_rbx
_test_r14_r13_r12_rbx:
LFB4a:
pushq %rbp
LCFI38a:
movq %rsp, %rbp
LCFI39a:
movq %r14, -32(%rbp)
LCFI40a:
movq %r13, -24(%rbp)
LCFI41a:
movq %r12, -16(%rbp)
LCFI42a:
movq %rbx, -8(%rbp)
LCFI43a:
subq $32, %rsp
LCFI44a:
movq $0, %r14
movq $0, %r13
movq $0, %r12
movq $0, %rbx
call _uwind_to_main
movq -32(%rbp), %r14
movq -24(%rbp), %r13
movq -16(%rbp), %r12
movq -8(%rbp), %rbx
leave
ret
LFE4a:
.globl _test_rbx_r12_r13_r14_r15
_test_rbx_r12_r13_r14_r15:
LFB3:
pushq %rbp
LCFI45:
movq %rsp, %rbp
LCFI46:
movq %rbx, -40(%rbp)
LCFI47:
movq %r12, -32(%rbp)
LCFI48:
movq %r13, -24(%rbp)
LCFI49:
movq %r14, -16(%rbp)
LCFI50:
movq %r15, -8(%rbp)
LCFI51:
subq $48, %rsp
LCFI52:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq -40(%rbp), %rbx
movq -32(%rbp), %r12
movq -24(%rbp), %r13
movq -16(%rbp), %r14
movq -8(%rbp), %r15
leave
ret
LFE3:
.globl _test_r13_rbx_r14_r15_r12
_test_r13_rbx_r14_r15_r12:
LFB3a:
pushq %rbp
LCFI45a:
movq %rsp, %rbp
LCFI46a:
movq %r13, -40(%rbp)
LCFI47a:
movq %rbx, -32(%rbp)
LCFI48a:
movq %r14, -24(%rbp)
LCFI49a:
movq %r15, -16(%rbp)
LCFI50a:
movq %r12, -8(%rbp)
LCFI51a:
subq $48, %rsp
LCFI52a:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq -40(%rbp), %r13
movq -32(%rbp), %rbx
movq -24(%rbp), %r14
movq -16(%rbp), %r15
movq -8(%rbp), %r12
leave
ret
LFE3a:
#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
LSCIE1:
.long 0x0
.byte 0x1
.ascii "zR\0"
.byte 0x1
.byte 0x78
.byte 0x10
.byte 0x1
.byte 0x10
.byte 0xc
.byte 0x7
.byte 0x8
.byte 0x90
.byte 0x1
.align 3
LECIE1:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE3:
.set L$set$5,LEFDE3-LASFDE3
.long L$set$5
LASFDE3:
.long LASFDE3-EH_frame1
.quad LFB13-.
.set L$set$6,LFE13-LFB13
.quad L$set$6
.byte 0x0
.byte 0x4
.set L$set$7,LCFI2-LFB13
.long L$set$7
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$8,LCFI3-LCFI2
.long L$set$8
.byte 0xd
.byte 0x6
.align 3
LEFDE3:
.globl _test_rbx.eh
_test_rbx.eh:
LSFDE9:
.set L$set$17,LEFDE9-LASFDE9
.long L$set$17
LASFDE9:
.long LASFDE9-EH_frame1
.quad LFB10-.
.set L$set$18,LFE10-LFB10
.quad L$set$18
.byte 0x0
.byte 0x4
.set L$set$19,LCFI8-LFB10
.long L$set$19
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$20,LCFI9-LCFI8
.long L$set$20
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$21,LCFI11-LCFI9
.long L$set$21
.byte 0x83
.byte 0x3
.align 3
LEFDE9:
.globl _test_rbx_r12.eh
_test_rbx_r12.eh:
LSFDE13:
.set L$set$27,LEFDE13-LASFDE13
.long L$set$27
LASFDE13:
.long LASFDE13-EH_frame1
.quad LFB8-.
.set L$set$28,LFE8-LFB8
.quad L$set$28
.byte 0x0
.byte 0x4
.set L$set$29,LCFI16-LFB8
.long L$set$29
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$30,LCFI17-LCFI16
.long L$set$30
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$31,LCFI20-LCFI17
.long L$set$31
.byte 0x8c
.byte 0x3
.byte 0x83
.byte 0x4
.align 3
LEFDE13:
.globl _test_rbx_r14.eh
_test_rbx_r14.eh:
LSFDE13a:
.set L$set$27a,LEFDE13a-LASFDE13a
.long L$set$27a
LASFDE13a:
.long LASFDE13a-EH_frame1
.quad LFB8a-.
.set L$set$28a,LFE8a-LFB8a
.quad L$set$28a
.byte 0x0
.byte 0x4
.set L$set$29a,LCFI16a-LFB8a
.long L$set$29a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$30a,LCFI17a-LCFI16a
.long L$set$30a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$31a,LCFI20a-LCFI17a
.long L$set$31a
.byte 0x8e
.byte 0x3
.byte 0x83
.byte 0x4
.align 3
LEFDE13a:
.globl _test_rbx_r12_r13.eh
_test_rbx_r12_r13.eh:
LSFDE17:
.set L$set$37,LEFDE17-LASFDE17
.long L$set$37
LASFDE17:
.long LASFDE17-EH_frame1
.quad LFB6-.
.set L$set$38,LFE6-LFB6
.quad L$set$38
.byte 0x0
.byte 0x4
.set L$set$39,LCFI26-LFB6
.long L$set$39
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$40,LCFI27-LCFI26
.long L$set$40
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$41,LCFI31-LCFI27
.long L$set$41
.byte 0x8d
.byte 0x3
.byte 0x8c
.byte 0x4
.byte 0x83
.byte 0x5
.align 3
LEFDE17:
.globl _test_rbx_r12_r13_r14.eh
_test_rbx_r12_r13_r14.eh:
LSFDE21:
.set L$set$47,LEFDE21-LASFDE21
.long L$set$47
LASFDE21:
.long LASFDE21-EH_frame1
.quad LFB4-.
.set L$set$48,LFE4-LFB4
.quad L$set$48
.byte 0x0
.byte 0x4
.set L$set$49,LCFI38-LFB4
.long L$set$49
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$50,LCFI39-LCFI38
.long L$set$50
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$51,LCFI44-LCFI39
.long L$set$51
.byte 0x8e
.byte 0x3
.byte 0x8d
.byte 0x4
.byte 0x8c
.byte 0x5
.byte 0x83
.byte 0x6
.align 3
LEFDE21:
.globl _test_r14_r13_r12_rbx.eh
_test_r14_r13_r12_rbx.eh:
LSFDE21a:
.set L$set$47a,LEFDE21a-LASFDE21a
.long L$set$47a
LASFDE21a:
.long LASFDE21a-EH_frame1
.quad LFB4a-.
.set L$set$48a,LFE4a-LFB4a
.quad L$set$48a
.byte 0x0
.byte 0x4
.set L$set$49a,LCFI38a-LFB4a
.long L$set$49a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$50a,LCFI39a-LCFI38a
.long L$set$50a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$51a,LCFI44a-LCFI39a
.long L$set$51a
.byte 0x8e
.byte 0x6
.byte 0x8d
.byte 0x5
.byte 0x8c
.byte 0x4
.byte 0x83
.byte 0x3
.align 3
LEFDE21a:
.globl _test_rbx_r12_r13_r14_r15.eh
_test_rbx_r12_r13_r14_r15.eh:
LSFDE23:
.set L$set$52,LEFDE23-LASFDE23
.long L$set$52
LASFDE23:
.long LASFDE23-EH_frame1
.quad LFB3-.
.set L$set$53,LFE3-LFB3
.quad L$set$53
.byte 0x0
.byte 0x4
.set L$set$54,LCFI45-LFB3
.long L$set$54
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$55,LCFI46-LCFI45
.long L$set$55
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$56,LCFI52-LCFI46
.long L$set$56
.byte 0x8f
.byte 0x3
.byte 0x8e
.byte 0x4
.byte 0x8d
.byte 0x5
.byte 0x8c
.byte 0x6
.byte 0x83
.byte 0x7
.align 3
LEFDE23:
.globl _test_r13_rbx_r14_r15_r12.eh
_test_r13_rbx_r14_r15_r12.eh:
LSFDE23a:
.set L$set$52a,LEFDE23a-LASFDE23a
.long L$set$52a
LASFDE23a:
.long LASFDE23a-EH_frame1
.quad LFB3a-.
.set L$set$53a,LFE3a-LFB3a
.quad L$set$53a
.byte 0x0
.byte 0x4
.set L$set$54a,LCFI45a-LFB3a
.long L$set$54a
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$55a,LCFI46a-LCFI45a
.long L$set$55a
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$56a,LCFI52a-LCFI46a
.long L$set$56a
.byte 0x8c
.byte 0x3
.byte 0x8f
.byte 0x4
.byte 0x8e
.byte 0x5
.byte 0x83
.byte 0x6
.byte 0x8d
.byte 0x7
.align 3
LEFDE23a:
#endif // USE_EH_FRAME
#if USE_COMPACT_UNWIND
.section __LD,__compact_unwind,regular,debug
.quad _test_no_reg
.set L101,LFE13-_test_no_reg
.long L101
.long 0x01000000
.quad 0
.quad 0
.quad _test_rbx
.set L102,LFE10-_test_rbx
.long L102
.long 0x01010001
.quad 0
.quad 0
.quad _test_rbx_r12
.set L103,LFE8-_test_rbx_r12
.long L103
.long 0x01020011
.quad 0
.quad 0
.quad _test_rbx_r14
.set L104,LFE8a-_test_rbx_r14
.long L104
.long 0x01020021
.quad 0
.quad 0
.quad _test_rbx_r12_r13
.set L105,LFE6-_test_rbx_r12_r13
.long L105
.long 0x010300D1
.quad 0
.quad 0
.quad _test_rbx_r12_r13_r14
.set L106,LFE4-_test_rbx_r12_r13_r14
.long L106
.long 0x010408D1
.quad 0
.quad 0
.quad _test_r14_r13_r12_rbx
.set L107,LFE4a-_test_r14_r13_r12_rbx
.long L107
.long 0x0104029C
.quad 0
.quad 0
.quad _test_rbx_r12_r13_r14_r15
.set L108,LFE3-_test_rbx_r12_r13_r14_r15
.long L108
.long 0x010558D1
.quad 0
.quad 0
.quad _test_r13_rbx_r14_r15_r12
.set L109,LFE3a-_test_r13_rbx_r14_r15_r12
.long L109
.long 0x01052B0B
.quad 0
.quad 0
#endif // USE_COMPACT_UNWIND
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,583 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -Wl,-no_compact_unwind
.data
.globl _unwind_tester_list
_unwind_tester_list:
.quad _test_no_reg
.quad _test_rbx
.quad _test_rbx_r12
.quad _test_rbx_r12_r13
.quad _test_rbx_r12_r13_r14
.quad _test_rbx_r12_r13_r14_r15
.quad _test_rbx_rbp
.quad _test_rbx_rbp_r12
.quad _test_rbx_rbp_r12_r13
.quad _test_rbx_rbp_r12_r13_r14
.quad _test_rbx_rbp_r12_r13_r14_r15
.quad 0
.text
.globl _test_no_reg
_test_no_reg:
LFB13:
subq $8, %rsp
LCFI0:
call _uwind_to_main
addq $8, %rsp
ret
LFE13:
.globl _test_rbx
_test_rbx:
LFB10:
pushq %rbx
LCFI3:
movq $0, %rbx
call _uwind_to_main
popq %rbx
ret
LFE10:
.globl _test_rbx_r12
_test_rbx_r12:
LFB8:
movq %rbx, -16(%rsp)
LCFI5:
movq %r12, -8(%rsp)
LCFI6:
subq $24, %rsp
LCFI7:
movq $0, %rbx
movq $0, %r12
call _uwind_to_main
movq 8(%rsp), %rbx
movq 16(%rsp), %r12
addq $24, %rsp
ret
LFE8:
.globl _test_rbx_rbp
_test_rbx_rbp:
LFB7:
movq %rbx, -16(%rsp)
LCFI8:
movq %rbp, -8(%rsp)
LCFI9:
subq $24, %rsp
LCFI10:
movq $0, %rbp
movq $0, %rbx
call _uwind_to_main
movq 8(%rsp), %rbx
movq 16(%rsp), %rbp
addq $24, %rsp
ret
LFE7:
.globl _test_rbx_r12_r13
_test_rbx_r12_r13:
LFB6:
movq %rbx, -24(%rsp)
LCFI11:
movq %r12, -16(%rsp)
LCFI12:
movq %r13, -8(%rsp)
LCFI13:
subq $24, %rsp
LCFI14:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
movq 16(%rsp), %r13
addq $24, %rsp
ret
LFE6:
.globl _test_rbx_r12_r13_r14
_test_rbx_r12_r13_r14:
LFB4:
movq %rbx, -32(%rsp)
LCFI19:
movq %r12, -24(%rsp)
LCFI20:
movq %r13, -16(%rsp)
LCFI21:
movq %r14, -8(%rsp)
LCFI22:
subq $40, %rsp
LCFI23:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq 8(%rsp), %rbx
movq 16(%rsp), %r12
movq 24(%rsp), %r13
movq 32(%rsp), %r14
addq $40, %rsp
ret
LFE4:
.globl _test_rbx_r12_r13_r14_r15
_test_rbx_r12_r13_r14_r15:
LFB3:
movq %rbx, -40(%rsp)
LCFI24:
movq %r12, -32(%rsp)
LCFI25:
movq %r13, -24(%rsp)
LCFI26:
movq %r14, -16(%rsp)
LCFI27:
movq %r15, -8(%rsp)
LCFI28:
subq $40, %rsp
LCFI29:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
movq 16(%rsp), %r13
movq 24(%rsp), %r14
movq 32(%rsp), %r15
addq $40, %rsp
ret
LFE3:
.globl _test_rbx_rbp_r12_r13_r14_r15
_test_rbx_rbp_r12_r13_r14_r15:
LFB2:
movq %rbx, -48(%rsp)
LCFI30:
movq %rbp, -40(%rsp)
LCFI31:
movq %r12, -32(%rsp)
LCFI32:
movq %r13, -24(%rsp)
LCFI33:
movq %r14, -16(%rsp)
LCFI34:
movq %r15, -8(%rsp)
LCFI35:
subq $72, %rsp
LCFI36:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq 24(%rsp), %rbx
movq 32(%rsp), %rbp
movq 40(%rsp), %r12
movq 48(%rsp), %r13
movq 56(%rsp), %r14
movq 64(%rsp), %r15
addq $72, %rsp
ret
LFE2:
.globl _test_rbx_rbp_r12
_test_rbx_rbp_r12:
LFB11:
movq %rbx, -24(%rsp)
movq %rbp, -16(%rsp)
movq %r12, -8(%rsp)
subq $24, %rsp
LCFI11a:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %rbp
movq 16(%rsp), %r12
addq $24, %rsp
ret
LFE11:
.globl _test_rbx_rbp_r12_r13
_test_rbx_rbp_r12_r13:
LFB457:
movq %rbx, -32(%rsp)
movq %rbp, -24(%rsp)
movq %r12, -16(%rsp)
movq %r13, -8(%rsp)
subq $40, %rsp
LFB457a:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq 8(%rsp), %rbx
movq 16(%rsp), %rbp
movq 24(%rsp), %r12
movq 32(%rsp), %r13
addq $40, %rsp
ret
LFE457:
.globl _test_rbx_rbp_r12_r13_r14
_test_rbx_rbp_r12_r13_r14:
LFB17:
movq %rbx, -40(%rsp)
movq %rbp, -32(%rsp)
movq %r12, -24(%rsp)
movq %r13, -16(%rsp)
movq %r14, -8(%rsp)
subq $40, %rsp
LFB17a:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %rbp
movq 16(%rsp), %r12
movq 24(%rsp), %r13
movq 32(%rsp), %r14
addq $40, %rsp
ret
LFE17:
.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 0x78 # sleb128 -8; CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.byte 0x1 # uleb128 0x1; Augmentation size
.byte 0x10 # FDE Encoding (pcrel)
.byte 0xc # DW_CFA_def_cfa
.byte 0x7 # uleb128 0x7
.byte 0x8 # uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.byte 0x1 # uleb128 0x1
.align 3
LECIE1:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE3:
.set L$set$3,LEFDE3-LASFDE3
.long L$set$3 # FDE Length
LASFDE3:
.long LASFDE3-EH_frame1 # FDE CIE offset
.quad LFB13-. # FDE initial location
.set L$set$4,LFE13-LFB13
.quad L$set$4 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$5,LCFI0-LFB13
.long L$set$5
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.align 3
LEFDE3:
.globl _test_rbx.eh
_test_rbx.eh:
LSFDE9:
.set L$set$12,LEFDE9-LASFDE9
.long L$set$12 # FDE Length
LASFDE9:
.long LASFDE9-EH_frame1 # FDE CIE offset
.quad LFB10-. # FDE initial location
.set L$set$13,LFE10-LFB10
.quad L$set$13 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14,LCFI3-LFB10
.long L$set$14
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.align 3
LEFDE9:
.globl _test_rbx_r12.eh
_test_rbx_r12.eh:
LSFDE13:
.set L$set$18,LEFDE13-LASFDE13
.long L$set$18 # FDE Length
LASFDE13:
.long LASFDE13-EH_frame1 # FDE CIE offset
.quad LFB8-. # FDE initial location
.set L$set$19,LFE8-LFB8
.quad L$set$19 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$20,LCFI7-LFB8
.long L$set$20
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 3
LEFDE13:
.globl _test_rbx_rbp.eh
_test_rbx_rbp.eh:
LSFDE14:
.set L$set$21,LEFDE14-LASFDE14
.long L$set$21 # FDE Length
LASFDE14:
.long LASFDE14-EH_frame1 # FDE CIE offset
.quad LFB7-. # FDE initial location
.set L$set$22,LFE7-LFB7
.quad L$set$22 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$23,LCFI10-LFB7
.long L$set$23
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 3
LEFDE14:
.globl _test_rbx_r12_r13.eh
_test_rbx_r12_r13.eh:
LSFDE17:
.set L$set$24,LEFDE17-LASFDE17
.long L$set$24 # FDE Length
LASFDE17:
.long LASFDE17-EH_frame1 # FDE CIE offset
.quad LFB6-. # FDE initial location
.set L$set$25,LFE6-LFB6
.quad L$set$25 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$26,LCFI14-LFB6
.long L$set$26
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x2 # uleb128 0x2
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 3
LEFDE17:
.globl _test_rbx_r12_r13_r14.eh
_test_rbx_r12_r13_r14.eh:
LSFDE21:
.set L$set$30,LEFDE21-LASFDE21
.long L$set$30 # FDE Length
LASFDE21:
.long LASFDE21-EH_frame1 # FDE CIE offset
.quad LFB4-. # FDE initial location
.set L$set$31,LFE4-LFB4
.quad L$set$31 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$32,LCFI23-LFB4
.long L$set$32
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x30 # uleb128 0x30
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x2 # uleb128 0x2
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x3 # uleb128 0x3
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x4 # uleb128 0x4
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x5 # uleb128 0x5
.align 3
LEFDE21:
.globl _test_rbx_r12_r13_r14_r15.eh
_test_rbx_r12_r13_r14_r15.eh:
LSFDE23:
.set L$set$33,LEFDE23-LASFDE23
.long L$set$33 # FDE Length
LASFDE23:
.long LASFDE23-EH_frame1 # FDE CIE offset
.quad LFB3-. # FDE initial location
.set L$set$34,LFE3-LFB3
.quad L$set$34 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$35,LCFI29-LFB3
.long L$set$35
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x30 # uleb128 0x30
.byte 0x8f # DW_CFA_offset, column 0xf
.byte 0x2 # uleb128 0x2
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x3 # uleb128 0x3
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x4 # uleb128 0x4
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x5 # uleb128 0x5
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x6 # uleb128 0x6
.align 3
LEFDE23:
.globl _test_rbx_rbp_r12_r13_r14_r15.eh
_test_rbx_rbp_r12_r13_r14_r15.eh:
LSFDE25:
.set L$set$36,LEFDE25-LASFDE25
.long L$set$36 # FDE Length
LASFDE25:
.long LASFDE25-EH_frame1 # FDE CIE offset
.quad LFB2-. # FDE initial location
.set L$set$37,LFE2-LFB2
.quad L$set$37 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$38,LCFI36-LFB2
.long L$set$38
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x50 # uleb128 0x50
.byte 0x8f # DW_CFA_offset, column 0xf
.byte 0x2 # uleb128 0x2
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x3 # uleb128 0x3
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x4 # uleb128 0x4
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x5 # uleb128 0x5
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x6 # uleb128 0x6
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x7 # uleb128 0x7
.align 3
LEFDE25:
.globl _test_rbx_rbp_r12.eh
_test_rbx_rbp_r12.eh:
LSFDE11:
.set L$set$24a,LEFDE11-LASFDE11
.long L$set$24a # FDE Length
LASFDE11:
.long LASFDE11-EH_frame1 # FDE CIE offset
.quad LFB11-. # FDE initial location
.set L$set$25a,LFE11-LFB11
.quad L$set$25a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$26a,LCFI11a-LFB11
.long L$set$26a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 3
LEFDE11:
.globl _test_rbx_rbp_r12_r13.eh
_test_rbx_rbp_r12_r13.eh:
.set L$set$30a,LEFDE457-LASFDE457
.long L$set$30a # FDE Length
LASFDE457:
.long LASFDE457-EH_frame1 # FDE CIE offset
.quad LFB457-. # FDE initial location
.set L$set$31a,LFE457-LFB457
.quad L$set$31a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$32a,LCFI23-LFB4
.long L$set$32a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x30 # uleb128 0x30
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x2 # uleb128 0x2
.byte 0x8c # DW_CFA_offset, column 0xc
.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 3
LEFDE457:
.globl _test_rbx_rbp_r12_r13_r14.eh
_test_rbx_rbp_r12_r13_r14.eh:
.set L$set$33a,LEFDE117-LASFDE117
.long L$set$33a # FDE Length
LASFDE117:
.long LASFDE117-EH_frame1 # FDE CIE offset
.quad LFB17-. # FDE initial location
.set L$set$34a,LFE17-LFB17
.quad L$set$34a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$35a,LCFI29-LFB3
.long L$set$35a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x30 # uleb128 0x30
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x2 # uleb128 0x2
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x3 # uleb128 0x3
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x4 # uleb128 0x4
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x5 # uleb128 0x5
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x6 # uleb128 0x6
.align 3
LEFDE117:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,598 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -Wl,-no_compact_unwind
.data
.globl _unwind_tester_list
_unwind_tester_list:
.quad _test_no_reg
.quad _test_rbx
.quad _test_rbx_r12
.quad _test_rbx_r12_r13
.quad _test_rbx_r12_r13_r14
.quad _test_rbx_r12_r13_r14_r15
.quad _test_rbx_rbp
.quad _test_rbx_rbp_r12
.quad _test_rbx_rbp_r12_r13
.quad _test_rbx_rbp_r12_r13_r14
.quad _test_rbx_rbp_r12_r13_r14_r15
.quad 0
.text
.globl _test_no_reg
_test_no_reg:
LFB13:
subq $160008, %rsp
LCFI0:
call _uwind_to_main
addq $160008, %rsp
ret
LFE13:
.globl _test_rbx
_test_rbx:
LFB10:
pushq %rbx
LCFI3:
subq $160000, %rsp
LCFI4:
movq $0, %rbx
call _uwind_to_main
addq $160000, %rsp
popq %rbx
ret
LFE10:
.globl _test_rbx_r12
_test_rbx_r12:
LFB8:
movq %rbx, -16(%rsp)
LCFI7:
movq %r12, -8(%rsp)
LCFI8:
subq $160024, %rsp
LCFI9:
movq $0, %rbx
movq $0, %r12
call _uwind_to_main
movq 160008(%rsp), %rbx
movq 160016(%rsp), %r12
addq $160024, %rsp
ret
LFE8:
.globl _test_rbx_rbp
_test_rbx_rbp:
LFB7:
movq %rbx, -16(%rsp)
LCFI10:
movq %rbp, -8(%rsp)
LCFI11:
subq $160024, %rsp
LCFI12:
movq $0, %rbp
movq $0, %rbx
call _uwind_to_main
movq 160008(%rsp), %rbx
movq 160016(%rsp), %rbp
addq $160024, %rsp
ret
LFE7:
.globl _test_rbx_r12_r13
_test_rbx_r12_r13:
LFB6:
movq %rbx, -24(%rsp)
LCFI13:
movq %r12, -16(%rsp)
LCFI14:
movq %r13, -8(%rsp)
LCFI15:
subq $160024, %rsp
LCFI16:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq 160000(%rsp), %rbx
movq 160008(%rsp), %r12
movq 160016(%rsp), %r13
addq $160024, %rsp
ret
LFE6:
.globl _test_rbx_rbp_r12
_test_rbx_rbp_r12:
LFB9:
movq %rbx, -24(%rsp)
movq %rbp, -16(%rsp)
movq %r12, -8(%rsp)
subq $160024, %rsp
LCFI9a:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
call _uwind_to_main
movq 160000(%rsp), %rbx
movq 160008(%rsp), %rbp
movq 160016(%rsp), %r12
addq $160024, %rsp
ret
LFE9:
.globl _test_rbx_r12_r13_r14
_test_rbx_r12_r13_r14:
LFB4:
movq %rbx, -32(%rsp)
LCFI21:
movq %r12, -24(%rsp)
LCFI22:
movq %r13, -16(%rsp)
LCFI23:
movq %r14, -8(%rsp)
LCFI24:
subq $160040, %rsp
LCFI25:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq 160008(%rsp), %rbx
movq 160016(%rsp), %r12
movq 160024(%rsp), %r13
movq 160032(%rsp), %r14
addq $160040, %rsp
ret
LFE4:
.globl _test_rbx_r12_r13_r14_r15
_test_rbx_r12_r13_r14_r15:
LFB3:
movq %rbx, -40(%rsp)
LCFI26:
movq %r12, -32(%rsp)
LCFI27:
movq %r13, -24(%rsp)
LCFI28:
movq %r14, -16(%rsp)
LCFI29:
movq %r15, -8(%rsp)
LCFI30:
subq $160040, %rsp
LCFI31:
movq $0, %rbx
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq 160000(%rsp), %rbx
movq 160008(%rsp), %r12
movq 160016(%rsp), %r13
movq 160024(%rsp), %r14
movq 160032(%rsp), %r15
addq $160040, %rsp
ret
LFE3:
.globl _test_rbx_rbp_r12_r13_r14_r15
_test_rbx_rbp_r12_r13_r14_r15:
LFB2:
movq %rbx, -48(%rsp)
LCFI32:
movq %rbp, -40(%rsp)
LCFI33:
movq %r12, -32(%rsp)
LCFI34:
movq %r13, -24(%rsp)
LCFI35:
movq %r14, -16(%rsp)
LCFI36:
movq %r15, -8(%rsp)
LCFI37:
subq $160072, %rsp
LCFI38:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
movq $0, %r14
movq $0, %r15
call _uwind_to_main
movq 160024(%rsp), %rbx
movq 160032(%rsp), %rbp
movq 160040(%rsp), %r12
movq 160048(%rsp), %r13
movq 160056(%rsp), %r14
movq 160064(%rsp), %r15
addq $160072, %rsp
ret
LFE2:
.globl _test_rbx_rbp_r12_r13
_test_rbx_rbp_r12_r13:
LFB457:
movq %rbx, -32(%rsp)
LCFI18:
movq %rbp, -24(%rsp)
LCFI19:
movq %r12, -16(%rsp)
movq %r13, -8(%rsp)
subq $160040, %rsp
LCFI20:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
call _uwind_to_main
movq 160008(%rsp), %rbx
movq 160016(%rsp), %rbp
movq 160024(%rsp), %r12
movq 160032(%rsp), %r13
addq $160040, %rsp
ret
LFE457:
.globl _test_rbx_rbp_r12_r13_r14
_test_rbx_rbp_r12_r13_r14:
LFB17:
movq %rbx, -40(%rsp)
movq %rbp, -32(%rsp)
movq %r12, -24(%rsp)
movq %r13, -16(%rsp)
movq %r14, -8(%rsp)
subq $160040, %rsp
LFB17a:
movq $0, %rbx
movq $0, %rbp
movq $0, %r12
movq $0, %r13
movq $0, %r14
call _uwind_to_main
movq 160000(%rsp), %rbx
movq 160008(%rsp), %rbp
movq 160016(%rsp), %r12
movq 160024(%rsp), %r13
movq 160032(%rsp), %r14
addq $160040, %rsp
ret
LFE17:
.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 0x78 # sleb128 -8; CIE Data Alignment Factor
.byte 0x10 # CIE RA Column
.byte 0x1 # uleb128 0x1; Augmentation size
.byte 0x10 # FDE Encoding (pcrel)
.byte 0xc # DW_CFA_def_cfa
.byte 0x7 # uleb128 0x7
.byte 0x8 # uleb128 0x8
.byte 0x90 # DW_CFA_offset, column 0x10
.byte 0x1 # uleb128 0x1
.align 3
LECIE1:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE3:
.set L$set$3,LEFDE3-LASFDE3
.long L$set$3 # FDE Length
LASFDE3:
.long LASFDE3-EH_frame1 # FDE CIE offset
.quad LFB13-. # FDE initial location
.set L$set$4,LFE13-LFB13
.quad L$set$4 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$5,LCFI0-LFB13
.long L$set$5
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x90,0xe2,0x9 # uleb128 0x27110
.align 3
LEFDE3:
.globl _test_rbx.eh
_test_rbx.eh:
LSFDE9:
.set L$set$12,LEFDE9-LASFDE9
.long L$set$12 # FDE Length
LASFDE9:
.long LASFDE9-EH_frame1 # FDE CIE offset
.quad LFB10-. # FDE initial location
.set L$set$13,LFE10-LFB10
.quad L$set$13 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14,LCFI3-LFB10
.long L$set$14
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15,LCFI4-LCFI3
.long L$set$15
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x90,0xe2,0x9 # uleb128 0x27110
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.align 3
LEFDE9:
.globl _test_rbx_r12.eh
_test_rbx_r12.eh:
LSFDE13:
.set L$set$20,LEFDE13-LASFDE13
.long L$set$20 # FDE Length
LASFDE13:
.long LASFDE13-EH_frame1 # FDE CIE offset
.quad LFB8-. # FDE initial location
.set L$set$21,LFE8-LFB8
.quad L$set$21 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$22,LCFI9-LFB8
.long L$set$22
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xe2,0x9 # uleb128 0x27120
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 3
LEFDE13:
.globl _test_rbx_rbp.eh
_test_rbx_rbp.eh:
LSFDE14:
.set L$set$23,LEFDE14-LASFDE14
.long L$set$23 # FDE Length
LASFDE14:
.long LASFDE14-EH_frame1 # FDE CIE offset
.quad LFB7-. # FDE initial location
.set L$set$24,LFE7-LFB7
.quad L$set$24 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$25,LCFI12-LFB7
.long L$set$25
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xe2,0x9 # uleb128 0x27120
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 3
LEFDE14:
.globl _test_rbx_r12_r13.eh
_test_rbx_r12_r13.eh:
LSFDE17:
.set L$set$26,LEFDE17-LASFDE17
.long L$set$26 # FDE Length
LASFDE17:
.long LASFDE17-EH_frame1 # FDE CIE offset
.quad LFB6-. # FDE initial location
.set L$set$27,LFE6-LFB6
.quad L$set$27 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$28,LCFI16-LFB6
.long L$set$28
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xe2,0x9 # uleb128 0x27120
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x2 # uleb128 0x2
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 3
LEFDE17:
.globl _test_rbx_r12_r13_r14.eh
_test_rbx_r12_r13_r14.eh:
LSFDE21:
.set L$set$32,LEFDE21-LASFDE21
.long L$set$32 # FDE Length
LASFDE21:
.long LASFDE21-EH_frame1 # FDE CIE offset
.quad LFB4-. # FDE initial location
.set L$set$33,LFE4-LFB4
.quad L$set$33 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$34,LCFI25-LFB4
.long L$set$34
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xb0,0xe2,0x9 # uleb128 0x27130
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x2 # uleb128 0x2
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x3 # uleb128 0x3
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x4 # uleb128 0x4
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x5 # uleb128 0x5
.align 3
LEFDE21:
.globl _test_rbx_r12_r13_r14_r15.eh
_test_rbx_r12_r13_r14_r15.eh:
LSFDE23:
.set L$set$35,LEFDE23-LASFDE23
.long L$set$35 # FDE Length
LASFDE23:
.long LASFDE23-EH_frame1 # FDE CIE offset
.quad LFB3-. # FDE initial location
.set L$set$36,LFE3-LFB3
.quad L$set$36 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$37,LCFI31-LFB3
.long L$set$37
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xb0,0xe2,0x9 # uleb128 0x27130
.byte 0x8f # DW_CFA_offset, column 0xf
.byte 0x2 # uleb128 0x2
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x3 # uleb128 0x3
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x4 # uleb128 0x4
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x5 # uleb128 0x5
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x6 # uleb128 0x6
.align 3
LEFDE23:
.globl _test_rbx_rbp_r12_r13_r14_r15.eh
_test_rbx_rbp_r12_r13_r14_r15.eh:
LSFDE25:
.set L$set$38,LEFDE25-LASFDE25
.long L$set$38 # FDE Length
LASFDE25:
.long LASFDE25-EH_frame1 # FDE CIE offset
.quad LFB2-. # FDE initial location
.set L$set$39,LFE2-LFB2
.quad L$set$39 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$40,LCFI38-LFB2
.long L$set$40
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xd0,0xe2,0x9 # uleb128 0x27150
.byte 0x8f # DW_CFA_offset, column 0xf
.byte 0x2 # uleb128 0x2
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x3 # uleb128 0x3
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x4 # uleb128 0x4
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x5 # uleb128 0x5
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x6 # uleb128 0x6
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x7 # uleb128 0x7
.align 3
LEFDE25:
.globl _test_rbx_rbp_r12_r13.eh
_test_rbx_rbp_r12_r13.eh:
LSFDE11:
.set L$set$17a,LEFDE11-LASFDE11
.long L$set$17a # FDE Length
LASFDE11:
.long LASFDE11-EH_frame1 # FDE CIE offset
.quad LFB457-. # FDE initial location
.set L$set$18a,LFE457-LFB457
.quad L$set$18a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$19a,LCFI20-LFB457
.long L$set$19a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xb0,0xe2,0x9 # uleb128 0x27130
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x2 # uleb128 0x2
.byte 0x8c # DW_CFA_offset, column 0xc
.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 3
LEFDE11:
.globl _test_rbx_rbp_r12_r13_r14.eh
_test_rbx_rbp_r12_r13_r14.eh:
LSFDE7:
.set L$set$35a,LEFDE7-LASFDE7
.long L$set$35a # FDE Length
LASFDE7:
.long LASFDE7-EH_frame1 # FDE CIE offset
.quad LFB17-. # FDE initial location
.set L$set$36a,LFE17-LFB17
.quad L$set$36a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$37a,LFB17a-LFB17
.long L$set$37a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xb0,0xe2,0x9 # uleb128 0x27130
.byte 0x8e # DW_CFA_offset, column 0xe
.byte 0x2 # uleb128 0x2
.byte 0x8d # DW_CFA_offset, column 0xd
.byte 0x3 # uleb128 0x3
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x4 # uleb128 0x4
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x5 # uleb128 0x5
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x6 # uleb128 0x6
.align 3
LEFDE7:
.globl _test_rbx_rbp_r12.eh
_test_rbx_rbp_r12.eh:
LSFDE19:
.set L$set$26a,LEFDE19-LASFDE19
.long L$set$26a # FDE Length
LASFDE19:
.long LASFDE19-EH_frame1 # FDE CIE offset
.quad LFB9-. # FDE initial location
.set L$set$27a,LFE9-LFB9
.quad L$set$27a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$28a,LCFI9a-LFB9
.long L$set$28a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xe2,0x9 # uleb128 0x27120
.byte 0x8c # DW_CFA_offset, column 0xc
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 3
LEFDE19:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,311 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86_64.s -arch x86_64 -Wl,-no_compact_unwind
.data
.globl _unwind_tester_list
_unwind_tester_list:
.quad _test_no_reg
.quad Ltest_rbx
.quad _test_rbx_pad_r12
.quad _test_rbx_same_value
.quad _test_rbx_same_register
.quad 0
.text
.globl _test_big_frameless_stack_odd_dwarf
_test_big_frameless_stack_odd_dwarf:
L100:
subq $160016, %rsp
L102:
movq $0, %rbx
call _uwind_to_main
addq $160016, %rsp
ret
L103:
LFE14:
.globl _test_no_reg
_test_no_reg:
LFB13:
pushq %rbp
LCFI2:
movq %rsp, %rbp
LCFI3:
call _uwind_to_main
leave
ret
LFE13:
Ltest_rbx:
LFB10:
pushq %rbp
LCFI8:
movq %rsp, %rbp
LCFI9:
pushq %rbx
LCFI10:
subq $8, %rsp
LCFI11:
movq $0, %rbx
call _uwind_to_main
addq $8, %rsp
popq %rbx
leave
ret
LFE10:
.globl _test_rbx_pad_r12
_test_rbx_pad_r12:
LFB8:
pushq %rbp
LCFI16:
movq %rsp, %rbp
LCFI17:
movq %rbx, -56(%rbp)
LCFI18:
movq %r12, -8(%rbp)
LCFI19:
subq $64, %rsp
LCFI20:
movq $0, %rbx
movq $0, %r12
call _uwind_to_main
movq (%rsp), %rbx
movq 8(%rsp), %r12
leave
ret
LFE8:
.globl _test_rbx_same_value
_test_rbx_same_value:
LFB10b:
jmp L33
pushq %rbx
LCFI3b:
movq $0, %rbx
call _uwind_to_main
popq %rbx
ret
L33:
pushq $0
call _uwind_to_main
popq %rax
ret
LFE10b:
.globl _test_rbx_same_register
_test_rbx_same_register:
LFB10c:
jmp L34
pushq %rbx
LCFI3c:
movq $0, %rbx
call _uwind_to_main
popq %rbx
ret
L34:
pushq $0
call _uwind_to_main
popq %rax
ret
LFE10c:
.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame1:
.set L$set$0,LECIE1-LSCIE1
.long L$set$0
LSCIE1:
.long 0x0
.byte 0x1
.ascii "zR\0"
.byte 0x1
.byte 0x78
.byte 0x10
.byte 0x1
.byte 0x10
.byte 0xc
.byte 0x7
.byte 0x8
.byte 0x90
.byte 0x1
.align 3
LECIE1:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE3:
.set L$set$5,LEFDE3-LASFDE3
.long L$set$5
LASFDE3:
.long LASFDE3-EH_frame1
.quad LFB13-.
.set L$set$6,LFE13-LFB13
.quad L$set$6
.byte 0x0
.byte 0x4
.set L$set$7,LCFI2-LFB13
.long L$set$7
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$8,LCFI3-LCFI2
.long L$set$8
.byte 0xd
.byte 0x6
.align 3
LEFDE3:
Ltest_rbx.eh:
LSFDE9:
.set L$set$17,LEFDE9-LASFDE9
.long L$set$17
LASFDE9:
.long LASFDE9-EH_frame1
.quad LFB10-.
.set L$set$18,LFE10-LFB10
.quad L$set$18
.byte 0x0
.byte 0x4
.set L$set$19,LCFI8-LFB10
.long L$set$19
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$20,LCFI9-LCFI8
.long L$set$20
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$21,LCFI11-LCFI9
.long L$set$21
.byte 0x83
.byte 0x3
.align 3
LEFDE9:
.globl _test_rbx_pad_r12.eh
_test_rbx_pad_r12.eh:
LSFDE13:
.set L$set$27,LEFDE13-LASFDE13
.long L$set$27
LASFDE13:
.long LASFDE13-EH_frame1
.quad LFB8-.
.set L$set$28,LFE8-LFB8
.quad L$set$28
.byte 0x0
.byte 0x4
.set L$set$29,LCFI16-LFB8
.long L$set$29
.byte 0xe
.byte 0x10
.byte 0x86
.byte 0x2
.byte 0x4
.set L$set$30,LCFI17-LCFI16
.long L$set$30
.byte 0xd
.byte 0x6
.byte 0x4
.set L$set$31,LCFI20-LCFI17
.long L$set$31
.byte 0x8c
.byte 0x3
.byte 0x83
.byte 0x9
.align 3
LEFDE13:
.globl _test_big_frameless_stack_odd_dwarf.eh
_test_big_frameless_stack_odd_dwarf.eh:
.set L$set$12a,LEFDE9a-LASFDE9a
.long L$set$12a # FDE Length
LASFDE9a:
.long LASFDE9a-EH_frame1 # FDE CIE offset
.quad L100-. # FDE initial location
.set L$set$13a,L103-L100
.quad L$set$13a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.long 7
.byte 0xc # DW_CFA_def_cfa
.byte 0x07 # uleb128 7
.byte 0x90,0xe2,0x9 # uleb128 0x27110
.align 3
LEFDE9a:
.globl _test_rbx_same_value.eh
_test_rbx_same_value.eh:
LSFDE9b:
.set L$set$12,LEFDE9b-LASFDE9b
.long L$set$12 # FDE Length
LASFDE9b:
.long LASFDE9b-EH_frame1 # FDE CIE offset
.quad LFB10b-. # FDE initial location
.set L$set$13,LFE10b-LFB10b
.quad L$set$13 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14,LCFI3b-LFB10b
.long L$set$14
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15,L33-LCFI3b
.long L$set$15
.byte 0x08 # DW_CFA_same_value
.byte 0x3 # uleb128 0x3
.align 3
LEFDE9b:
.globl _test_rbx_same_register.eh
_test_rbx_same_register.eh:
LSFDE9c:
.set L$set$12c,LEFDE9c-LASFDE9c
.long L$set$12c # FDE Length
LASFDE9c:
.long LASFDE9c-EH_frame1 # FDE CIE offset
.quad LFB10c-. # FDE initial location
.set L$set$16c,LFE10c-LFB10c
.quad L$set$16c # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$17c,LCFI3c-LFB10c
.long L$set$17c
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x10 # uleb128 0x10
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$18c,L34-LCFI3c
.long L$set$18c
.byte 0x09 # DW_CFA_register
.byte 0x3 # uleb128 0x3
.byte 0x3 # uleb128 0x3
.align 3
LEFDE9c:

Просмотреть файл

@ -0,0 +1,589 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions
.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:
.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
.byte 0x88 # DW_CFA_offset, column 0x8 // duplicate save in CIE means disable compact unwind encoding
.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:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,671 @@
# 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

Просмотреть файл

@ -0,0 +1,516 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -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_esi_edi_ebp
.long _test_ebx_esi_edi
.long _test_ebx_esi_edi_ebp
.long _test_esi_ebp_ebx_edi
.long 0
.text
.globl _test_ebx
_test_ebx:
LFB13:
pushl %ebx
LCFI0:
subl $24, %esp
LCFI1:
movl $0, %ebx
call _uwind_to_main
addl $24, %esp
popl %ebx
ret
LFE13:
.globl _test_no_reg
_test_no_reg:
LFB12:
subl $28, %esp
LCFI2:
call _uwind_to_main
addl $28, %esp
ret
LFE12:
.globl _test_esi
_test_esi:
LFB10:
pushl %esi
LCFI5:
subl $24, %esp
LCFI6:
movl $0, %esi
call _uwind_to_main
addl $24, %esp
popl %esi
ret
LFE10:
.globl _test_edi
_test_edi:
LFB11:
pushl %edi
LCFI3:
subl $24, %esp
LCFI4:
movl $0, %edi
call _uwind_to_main
addl $24, %esp
popl %edi
ret
LFE11:
.globl _test_ebx_esi
_test_ebx_esi:
LFB9:
subl $28, %esp
LCFI7:
movl %ebx, 20(%esp)
LCFI8:
movl %esi, 24(%esp)
LCFI9:
movl $0, %ebx
movl $0, %esi
call _uwind_to_main
movl 20(%esp), %ebx
movl 24(%esp), %esi
addl $28, %esp
ret
LFE9:
.globl _test_esi_edi
_test_esi_edi:
LFB8:
subl $28, %esp
LCFI10:
movl %esi, 20(%esp)
LCFI11:
movl %edi, 24(%esp)
LCFI12:
movl $0, %esi
movl $0, %edi
call _uwind_to_main
movl 20(%esp), %esi
movl 24(%esp), %edi
addl $28, %esp
ret
LFE8:
.globl _test_ebx_esi_edi
_test_ebx_esi_edi:
LFB7:
subl $28, %esp
LCFI13:
movl %ebx, 16(%esp)
LCFI14:
movl %esi, 20(%esp)
LCFI15:
movl %edi, 24(%esp)
LCFI16:
movl $0, %ebx
movl $0, %esi
movl $0, %edi
call _uwind_to_main
movl 16(%esp), %ebx
movl 20(%esp), %esi
movl 24(%esp), %edi
addl $28, %esp
ret
LFE7:
.globl _test_esi_edi_ebp
_test_esi_edi_ebp:
LFB6:
subl $28, %esp
LCFI17:
movl %esi, 16(%esp)
LCFI18:
movl %edi, 20(%esp)
LCFI19:
movl %ebp, 24(%esp)
LCFI20:
movl $0, %esi
movl $0, %edi
movl $0, %ebp
call _uwind_to_main
movl 16(%esp), %esi
movl 20(%esp), %edi
movl 24(%esp), %ebp
addl $28, %esp
ret
LFE6:
.globl _test_ebx_esi_edi_ebp
_test_ebx_esi_edi_ebp:
LFB5:
subl $60, %esp
LCFI21:
movl %ebx, 44(%esp)
LCFI22:
movl %esi, 48(%esp)
LCFI23:
movl %edi, 52(%esp)
LCFI24:
movl %ebp, 56(%esp)
LCFI25:
movl $0, %ebx
movl $0, %esi
movl $0, %edi
movl $0, %ebp
call _uwind_to_main
movl 44(%esp), %ebx
movl 48(%esp), %esi
movl 52(%esp), %edi
movl 56(%esp), %ebp
addl $60, %esp
ret
LFE5:
.globl _test_esi_ebp_ebx_edi
_test_esi_ebp_ebx_edi:
LFB5a:
subl $60, %esp
LCFI21a:
movl %esi, 44(%esp)
LCFI22a:
movl %ebp, 48(%esp)
LCFI23a:
movl %ebx, 52(%esp)
LCFI24a:
movl %edi, 56(%esp)
LCFI25a:
movl $0, %esi
movl $0, %ebp
movl $0, %ebx
movl $0, %edi
call _uwind_to_main
movl 44(%esp), %esi
movl 48(%esp), %ebp
movl 52(%esp), %ebx
movl 56(%esp), %edi
addl $60, %esp
ret
LFE5a:
.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_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,LCFI0-LFB13
.long L$set$3
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$4,LCFI1-LCFI0
.long L$set$4
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.align 2
LEFDE3:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE5:
.set L$set$5,LEFDE5-LASFDE5
.long L$set$5 # FDE Length
LASFDE5:
.long LASFDE5-EH_frame1 # FDE CIE offset
.long LFB12-. # FDE initial location
.set L$set$6,LFE12-LFB12
.long L$set$6 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$7,LCFI2-LFB12
.long L$set$7
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.align 2
LEFDE5:
.globl _test_esi.eh
_test_esi.eh:
LSFDE9:
.set L$set$12,LEFDE9-LASFDE9
.long L$set$12 # FDE Length
LASFDE9:
.long LASFDE9-EH_frame1 # FDE CIE offset
.long LFB10-. # FDE initial location
.set L$set$13,LFE10-LFB10
.long L$set$13 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14,LCFI5-LFB10
.long L$set$14
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15,LCFI6-LCFI5
.long L$set$15
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.align 2
LEFDE9:
.globl _test_edi.eh
_test_edi.eh:
LSFDE10:
.set L$set$12a,LEFDE10-LASFDE10
.long L$set$12a # FDE Length
LASFDE10:
.long LASFDE10-EH_frame1 # FDE CIE offset
.long LFB11-. # FDE initial location
.set L$set$13a,LFE11-LFB11
.long L$set$13a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14a,LCFI3-LFB11
.long L$set$14a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15a,LCFI4-LCFI3
.long L$set$15a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.align 2
LEFDE10:
.globl _test_ebx_esi.eh
_test_ebx_esi.eh:
LSFDE11:
.set L$set$16,LEFDE11-LASFDE11
.long L$set$16 # FDE Length
LASFDE11:
.long LASFDE11-EH_frame1 # FDE CIE offset
.long LFB9-. # FDE initial location
.set L$set$17,LFE9-LFB9
.long L$set$17 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$18,LCFI7-LFB9
.long L$set$18
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$19,LCFI9-LCFI7
.long L$set$19
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 2
LEFDE11:
.globl _test_esi_edi.eh
_test_esi_edi.eh:
LSFDE13:
.set L$set$20,LEFDE13-LASFDE13
.long L$set$20 # FDE Length
LASFDE13:
.long LASFDE13-EH_frame1 # FDE CIE offset
.long LFB8-. # FDE initial location
.set L$set$21,LFE8-LFB8
.long L$set$21 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$22,LCFI10-LFB8
.long L$set$22
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$23,LCFI12-LCFI10
.long L$set$23
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.align 2
LEFDE13:
.globl _test_ebx_esi_edi.eh
_test_ebx_esi_edi.eh:
LSFDE15:
.set L$set$24,LEFDE15-LASFDE15
.long L$set$24 # FDE Length
LASFDE15:
.long LASFDE15-EH_frame1 # FDE CIE offset
.long LFB7-. # FDE initial location
.set L$set$25,LFE7-LFB7
.long L$set$25 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$26,LCFI13-LFB7
.long L$set$26
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$27,LCFI16-LCFI13
.long L$set$27
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 2
LEFDE15:
.globl _test_esi_edi_ebp.eh
_test_esi_edi_ebp.eh:
LSFDE17:
.set L$set$28,LEFDE17-LASFDE17
.long L$set$28 # FDE Length
LASFDE17:
.long LASFDE17-EH_frame1 # FDE CIE offset
.long LFB6-. # FDE initial location
.set L$set$29,LFE6-LFB6
.long L$set$29 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$30,LCFI17-LFB6
.long L$set$30
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x20 # uleb128 0x20
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$31,LCFI20-LCFI17
.long L$set$31
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x2 # uleb128 0x2
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x3 # uleb128 0x3
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x4 # uleb128 0x4
.align 2
LEFDE17:
.globl _test_ebx_esi_edi_ebp.eh
_test_ebx_esi_edi_ebp.eh:
LSFDE19:
.set L$set$32,LEFDE19-LASFDE19
.long L$set$32 # FDE Length
LASFDE19:
.long LASFDE19-EH_frame1 # FDE CIE offset
.long LFB5-. # FDE initial location
.set L$set$33,LFE5-LFB5
.long L$set$33 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$34,LCFI21-LFB5
.long L$set$34
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x40 # uleb128 0x40
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$35,LCFI25-LCFI21
.long L$set$35
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x2 # uleb128 0x2
.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
LEFDE19:
.globl _test_esi_ebp_ebx_edi.eh
_test_esi_ebp_ebx_edi.eh:
LSFDE19a:
.set L$set$32a,LEFDE19a-LASFDE19a
.long L$set$32a # FDE Length
LASFDE19a:
.long LASFDE19a-EH_frame1 # FDE CIE offset
.long LFB5a-. # FDE initial location
.set L$set$33a,LFE5a-LFB5a
.long L$set$33a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$34a,LCFI21a-LFB5a
.long L$set$34a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x40 # uleb128 0x40
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$35a,LCFI25a-LCFI21a
.long L$set$35a
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x4 # uleb128 0x4
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x5 # uleb128 0x5
.align 2
LEFDE19a:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,516 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -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_esi_edi_ebp
.long _test_ebx_esi_edi
.long _test_ebx_esi_ebp
.long _test_ebx_esi_edi_ebp
.long 0
.text
.globl _test_ebx
_test_ebx:
LFB13:
pushl %ebx
LCFI0:
subl $80024, %esp
LCFI1:
movl $0, %ebx
call _uwind_to_main
addl $80024, %esp
popl %ebx
ret
LFE13:
.globl _test_no_reg
_test_no_reg:
LFB12:
subl $80028, %esp
LCFI2:
call _uwind_to_main
addl $80028, %esp
ret
LFE12:
.globl _test_esi
_test_esi:
LFB10:
pushl %esi
LCFI5:
subl $80024, %esp
LCFI6:
movl $0, %esi
call _uwind_to_main
addl $80024, %esp
popl %esi
ret
LFE10:
.globl _test_edi
_test_edi:
LFB11:
pushl %edi
LCFI3:
subl $80024, %esp
LCFI4:
movl $0, %edi
call _uwind_to_main
addl $80024, %esp
popl %edi
ret
LFE11:
.globl _test_ebx_esi
_test_ebx_esi:
LFB9:
nop
subl $80028, %esp
LCFI7:
movl %ebx, 80020(%esp)
LCFI8:
movl %esi, 80024(%esp)
LCFI9:
movl $0, %ebx
movl $0, %esi
call _uwind_to_main
movl 80020(%esp), %ebx
movl 80024(%esp), %esi
addl $80028, %esp
ret
LFE9:
.globl _test_esi_edi
_test_esi_edi:
LFB8:
subl $80028, %esp
LCFI10:
movl %esi, 80020(%esp)
LCFI11:
movl %edi, 80024(%esp)
LCFI12:
movl $0, %esi
movl $0, %edi
call _uwind_to_main
movl 80020(%esp), %esi
movl 80024(%esp), %edi
addl $80028, %esp
ret
LFE8:
.globl _test_ebx_esi_edi
_test_ebx_esi_edi:
LFB7:
subl $80028, %esp
LCFI13:
movl %ebx, 80016(%esp)
LCFI14:
movl %esi, 80020(%esp)
LCFI15:
movl %edi, 80024(%esp)
LCFI16:
movl $0, %ebx
movl $0, %esi
movl $0, %edi
call _uwind_to_main
movl 80016(%esp), %ebx
movl 80020(%esp), %esi
movl 80024(%esp), %edi
addl $80028, %esp
ret
LFE7:
.globl _test_ebx_esi_ebp
_test_ebx_esi_ebp:
LFB7a:
subl $80028, %esp
LCFI13a:
movl %ebx, 80016(%esp)
LCFI14a:
movl %esi, 80020(%esp)
LCFI15a:
movl %ebp, 80024(%esp)
LCFI16a:
movl $0, %ebx
movl $0, %esi
movl $0, %ebp
call _uwind_to_main
movl 80016(%esp), %ebx
movl 80020(%esp), %esi
movl 80024(%esp), %ebp
addl $80028, %esp
ret
LFE7a:
.globl _test_esi_edi_ebp
_test_esi_edi_ebp:
LFB6:
subl $80028, %esp
LCFI17:
movl %esi, 80016(%esp)
LCFI18:
movl %edi, 80020(%esp)
LCFI19:
movl %ebp, 80024(%esp)
LCFI20:
movl $0, %esi
movl $0, %edi
movl $0, %ebp
call _uwind_to_main
movl 80016(%esp), %esi
movl 80020(%esp), %edi
movl 80024(%esp), %ebp
addl $80028, %esp
ret
LFE6:
.globl _test_ebx_esi_edi_ebp
_test_ebx_esi_edi_ebp:
LFB5:
subl $80028, %esp
LCFI21:
movl %ebx, 80012(%esp)
LCFI22:
movl %esi, 80016(%esp)
LCFI23:
movl %edi, 80020(%esp)
LCFI24:
movl %ebp, 80024(%esp)
LCFI25:
movl $0, %ebx
movl $0, %esi
movl $0, %edi
movl $0, %ebp
call _uwind_to_main
movl 80012(%esp), %ebx
movl 80016(%esp), %esi
movl 80020(%esp), %edi
movl 80024(%esp), %ebp
addl $80028, %esp
ret
LFE5:
.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_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,LCFI0-LFB13
.long L$set$3
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$4,LCFI1-LCFI0
.long L$set$4
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x2 # uleb128 0x2
.align 2
LEFDE3:
.globl _test_no_reg.eh
_test_no_reg.eh:
LSFDE5:
.set L$set$5,LEFDE5-LASFDE5
.long L$set$5 # FDE Length
LASFDE5:
.long LASFDE5-EH_frame1 # FDE CIE offset
.long LFB12-. # FDE initial location
.set L$set$6,LFE12-LFB12
.long L$set$6 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$7,LCFI2-LFB12
.long L$set$7
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.align 2
LEFDE5:
.globl _test_esi.eh
_test_esi.eh:
LSFDE9:
.set L$set$12,LEFDE9-LASFDE9
.long L$set$12 # FDE Length
LASFDE9:
.long LASFDE9-EH_frame1 # FDE CIE offset
.long LFB10-. # FDE initial location
.set L$set$13,LFE10-LFB10
.long L$set$13 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14,LCFI5-LFB10
.long L$set$14
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15,LCFI6-LCFI5
.long L$set$15
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.align 2
LEFDE9:
.globl _test_edi.eh
_test_edi.eh:
LSFDE10:
.set L$set$12a,LEFDE10-LASFDE10
.long L$set$12a # FDE Length
LASFDE10:
.long LASFDE10-EH_frame1 # FDE CIE offset
.long LFB11-. # FDE initial location
.set L$set$13a,LFE11-LFB11
.long L$set$13a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$14a,LCFI3-LFB11
.long L$set$14a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0x8 # uleb128 0x8
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$15a,LCFI4-LCFI3
.long L$set$15a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.align 2
LEFDE10:
.globl _test_ebx_esi.eh
_test_ebx_esi.eh:
LSFDE11:
.set L$set$16,LEFDE11-LASFDE11
.long L$set$16 # FDE Length
LASFDE11:
.long LASFDE11-EH_frame1 # FDE CIE offset
.long LFB9-. # FDE initial location
.set L$set$17,LFE9-LFB9
.long L$set$17 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$18,LCFI7-LFB9
.long L$set$18
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$19,LCFI9-LCFI7
.long L$set$19
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x2 # uleb128 0x2
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.align 2
LEFDE11:
.globl _test_esi_edi.eh
_test_esi_edi.eh:
LSFDE13:
.set L$set$20,LEFDE13-LASFDE13
.long L$set$20 # FDE Length
LASFDE13:
.long LASFDE13-EH_frame1 # FDE CIE offset
.long LFB8-. # FDE initial location
.set L$set$21,LFE8-LFB8
.long L$set$21 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$22,LCFI10-LFB8
.long L$set$22
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$23,LCFI12-LCFI10
.long L$set$23
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.align 2
LEFDE13:
.globl _test_ebx_esi_edi.eh
_test_ebx_esi_edi.eh:
LSFDE15:
.set L$set$24,LEFDE15-LASFDE15
.long L$set$24 # FDE Length
LASFDE15:
.long LASFDE15-EH_frame1 # FDE CIE offset
.long LFB7-. # FDE initial location
.set L$set$25,LFE7-LFB7
.long L$set$25 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$26,LCFI13-LFB7
.long L$set$26
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$27,LCFI16-LCFI13
.long L$set$27
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 2
LEFDE15:
.globl _test_ebx_esi_ebp.eh
_test_ebx_esi_ebp.eh:
LSFDE15a:
.set L$set$24a,LEFDE15a-LASFDE15a
.long L$set$24a # FDE Length
LASFDE15a:
.long LASFDE15a-EH_frame1 # FDE CIE offset
.long LFB7a-. # FDE initial location
.set L$set$25a,LFE7a-LFB7a
.long L$set$25a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$26a,LCFI13a-LFB7a
.long L$set$26a
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$27a,LCFI16a-LCFI13a
.long L$set$27a
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x2 # uleb128 0x2
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x3 # uleb128 0x3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 2
LEFDE15a:
.globl _test_esi_edi_ebp.eh
_test_esi_edi_ebp.eh:
LSFDE17:
.set L$set$28,LEFDE17-LASFDE17
.long L$set$28 # FDE Length
LASFDE17:
.long LASFDE17-EH_frame1 # FDE CIE offset
.long LFB6-. # FDE initial location
.set L$set$29,LFE6-LFB6
.long L$set$29 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$30,LCFI17-LFB6
.long L$set$30
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$31,LCFI20-LCFI17
.long L$set$31
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x2 # uleb128 0x2
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0x3 # uleb128 0x3
.byte 0x86 # DW_CFA_offset, column 0x6
.byte 0x4 # uleb128 0x4
.align 2
LEFDE17:
.globl _test_ebx_esi_edi_ebp.eh
_test_ebx_esi_edi_ebp.eh:
LSFDE19:
.set L$set$32,LEFDE19-LASFDE19
.long L$set$32 # FDE Length
LASFDE19:
.long LASFDE19-EH_frame1 # FDE CIE offset
.long LFB5-. # FDE initial location
.set L$set$33,LFE5-LFB5
.long L$set$33 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$34,LCFI21-LFB5
.long L$set$34
.byte 0xe # DW_CFA_def_cfa_offset
.byte 0xa0,0xf1,0x4 # uleb128 0x138a0
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$35,LCFI25-LCFI21
.long L$set$35
.byte 0x84 # DW_CFA_offset, column 0x4
.byte 0x2 # uleb128 0x2
.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
LEFDE19:
.subsections_via_symbols

Просмотреть файл

@ -0,0 +1,330 @@
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions
# TEST-OPTIONS: unwind_test_main.c unwind_test_x86.s -arch i386 -fexceptions -Wl,-no_compact_unwind
.data
.globl _unwind_tester_list
_unwind_tester_list:
.long _test_ebx_wrong_slot
.long _test_esi_in_ebx
.long _test_edi_pad_ebx
.long _test_coal_ebx_esi_edi
.long Ltest_edi_pad_ebx
.long 0
.text
.globl _test_ebx_wrong_slot
_test_ebx_wrong_slot:
LFB13:
pushl %ebp
LCFI2:
movl %esp, %ebp
LCFI3:
subl $4, %esp
pushl %ebx
LCFI4:
subl $16, %esp
LCFI5:
movl $0, %ebx
call _uwind_to_main
addl $16, %esp
popl %ebx
addl $4, %esp
leave
ret
LFE13:
.globl _test_esi_in_ebx
_test_esi_in_ebx:
LFB9:
pushl %ebp
LCFI17:
movl %esp, %ebp
LCFI18:
subl $24, %esp
LCFI19:
movl %ebx, -8(%ebp)
LCFI20:
movl %esi, %ebx
LCFI21:
movl $0, %esi
call _uwind_to_main
movl %ebx, %esi
movl -8(%ebp), %ebx
leave
ret
LFE9:
.globl _test_edi_pad_ebx
_test_edi_pad_ebx:
LFB7a:
pushl %ebp
LCFI27a:
movl %esp, %ebp
LCFI28a:
subl $140, %esp
LCFI29a:
movl %edi, -44(%ebp)
LCFI30a:
LCFI31a:
movl %ebx, -4(%ebp)
LCFI32a:
movl $0, %ebx
movl $0, %edi
call _uwind_to_main
movl -44(%ebp), %edi
movl -4(%ebp), %ebx
leave
ret
LFE7a:
Ltest_edi_pad_ebx:
LFB7b:
pushl %ebp
LCFI27b:
movl %esp, %ebp
LCFI28b:
subl $140, %esp
LCFI29b:
movl %edi, -44(%ebp)
LCFI30b:
LCFI31b:
movl %ebx, -4(%ebp)
LCFI32b:
movl $0, %ebx
movl $0, %edi
call _uwind_to_main
movl -44(%ebp), %edi
movl -4(%ebp), %ebx
leave
ret
LFE7b:
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
.globl _test_coal_ebx_esi_edi
.weak_definition _test_coal_ebx_esi_edi
_test_coal_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:
.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_ebx_wrong_slot.eh
_test_ebx_wrong_slot.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 0x4 # uleb128 0x4
.align 2
LEFDE3:
.globl _test_esi_in_ebx.eh
_test_esi_in_ebx.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 0x09, 0x06, 0x03 # DW_CFA_register 6, 3
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x4 # uleb128 0x4
.align 2
LEFDE11:
.globl _test_edi_pad_ebx.eh
_test_edi_pad_ebx.eh:
LSFDE15a:
.set L$set$30,LEFDE15a-LASFDE15a
.long L$set$30 # FDE Length
LASFDE15a:
.long LASFDE15a-EH_frame1 # FDE CIE offset
.long LFB7a-. # FDE initial location
.set L$set$31,LFE7a-LFB7a
.long L$set$31 # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$32,LCFI27a-LFB7a
.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,LCFI28a-LCFI27a
.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,LCFI32a-LCFI28a
.long L$set$34
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0xD # uleb128 0xD
.align 2
LEFDE15a:
ltest_edi_pad_ebx.eh:
LSFDE15b:
.set L$set$30a,LEFDE15b-LASFDE15b
.long L$set$30a # FDE Length
LASFDE15b:
.long LASFDE15b-EH_frame1 # FDE CIE offset
.long LFB7b-. # FDE initial location
.set L$set$31a,LFE7b-LFB7b
.long L$set$31a # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$32a,LCFI27b-LFB7b
.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,LCFI28b-LCFI27b
.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,LCFI32b-LCFI28b
.long L$set$34a
.byte 0x83 # DW_CFA_offset, column 0x3
.byte 0x3 # uleb128 0x3
.byte 0x87 # DW_CFA_offset, column 0x7
.byte 0xD # uleb128 0xD
.align 2
LEFDE15b:
.globl _test_coal_ebx_esi_edi.eh
_test_coal_ebx_esi_edi.eh:
LSFDE15:
.set L$set$30b,LEFDE15-LASFDE15
.long L$set$30b # FDE Length
LASFDE15:
.long LASFDE15-EH_frame1 # FDE CIE offset
.long LFB7-. # FDE initial location
.set L$set$31b,LFE7-LFB7
.long L$set$31b # FDE address range
.byte 0x0 # uleb128 0x0; Augmentation size
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$32b,LCFI27-LFB7
.long L$set$32b
.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$33b,LCFI28-LCFI27
.long L$set$33b
.byte 0xd # DW_CFA_def_cfa_register
.byte 0x4 # uleb128 0x4
.byte 0x4 # DW_CFA_advance_loc4
.set L$set$34b,LCFI32-LCFI28
.long L$set$34b
.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:
.subsections_via_symbols