1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj -o - %s | llvm-readobj -u \ 2*9880d681SAndroid Build Coastguard Worker@ RUN: | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker .syntax unified 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker .type save,%function 7*9880d681SAndroid Build Coastguard Worker .thumb_func 8*9880d681SAndroid Build Coastguard Workersave: 9*9880d681SAndroid Build Coastguard Worker .fnstart 10*9880d681SAndroid Build Coastguard Worker .unwind_raw 4, 0xb1, 0x01 11*9880d681SAndroid Build Coastguard Worker push {r0} 12*9880d681SAndroid Build Coastguard Worker pop {r0} 13*9880d681SAndroid Build Coastguard Worker bx lr 14*9880d681SAndroid Build Coastguard Worker .fnend 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker .type empty,%function 17*9880d681SAndroid Build Coastguard Worker .thumb_func 18*9880d681SAndroid Build Coastguard Workerempty: 19*9880d681SAndroid Build Coastguard Worker .fnstart 20*9880d681SAndroid Build Coastguard Worker .unwind_raw 0, 0xb0 21*9880d681SAndroid Build Coastguard Worker bx lr 22*9880d681SAndroid Build Coastguard Worker .fnend 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker .type extended,%function 25*9880d681SAndroid Build Coastguard Worker .thumb_func 26*9880d681SAndroid Build Coastguard Workerextended: 27*9880d681SAndroid Build Coastguard Worker .fnstart 28*9880d681SAndroid Build Coastguard Worker .unwind_raw 12, 0x9b, 0x40, 0x84, 0x80, 0xb0, 0xb0 29*9880d681SAndroid Build Coastguard Worker @ .save {fp, lr} 30*9880d681SAndroid Build Coastguard Worker stmfd sp!, {fp, lr} 31*9880d681SAndroid Build Coastguard Worker @ .setfp fp, sp, #4 32*9880d681SAndroid Build Coastguard Worker add fp, sp, #4 33*9880d681SAndroid Build Coastguard Worker @ .pad #8 34*9880d681SAndroid Build Coastguard Worker sub sp, sp, #8 35*9880d681SAndroid Build Coastguard Worker add sp, sp, #8 36*9880d681SAndroid Build Coastguard Worker sub fp, sp, #4 37*9880d681SAndroid Build Coastguard Worker ldmfd sp!, {fp, lr} 38*9880d681SAndroid Build Coastguard Worker bx lr 39*9880d681SAndroid Build Coastguard Worker .fnend 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker .type refuse,%function 42*9880d681SAndroid Build Coastguard Worker .thumb_func 43*9880d681SAndroid Build Coastguard Workerrefuse: 44*9880d681SAndroid Build Coastguard Worker .fnstart 45*9880d681SAndroid Build Coastguard Worker .unwind_raw 0, 0x80, 0x00 46*9880d681SAndroid Build Coastguard Worker bx lr 47*9880d681SAndroid Build Coastguard Worker .fnend 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker .type stack_adjust,%function 50*9880d681SAndroid Build Coastguard Worker .thumb_func 51*9880d681SAndroid Build Coastguard Workerstack_adjust: 52*9880d681SAndroid Build Coastguard Worker .fnstart 53*9880d681SAndroid Build Coastguard Worker .setfp fp, sp, #32 54*9880d681SAndroid Build Coastguard Worker .unwind_raw 24, 0xc2 55*9880d681SAndroid Build Coastguard Worker .fnend 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker@ CHECK: UnwindInformation { 58*9880d681SAndroid Build Coastguard Worker@ CHECK: UnwindIndexTable { 59*9880d681SAndroid Build Coastguard Worker@ CHECK: SectionName: .ARM.exidx 60*9880d681SAndroid Build Coastguard Worker@ CHECK: Entries [ 61*9880d681SAndroid Build Coastguard Worker@ CHECK: Entry { 62*9880d681SAndroid Build Coastguard Worker@ CHECK: Model: Compact (Inline) 63*9880d681SAndroid Build Coastguard Worker@ CHECK: PersonalityIndex: 0 64*9880d681SAndroid Build Coastguard Worker@ CHECK: Opcodes [ 65*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB1 0x01 ; pop {r0} 66*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 67*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 68*9880d681SAndroid Build Coastguard Worker@ CHECK: } 69*9880d681SAndroid Build Coastguard Worker@ CHECK: Entry { 70*9880d681SAndroid Build Coastguard Worker@ CHECK: Model: Compact (Inline) 71*9880d681SAndroid Build Coastguard Worker@ CHECK: PersonalityIndex: 0 72*9880d681SAndroid Build Coastguard Worker@ CHECK: Opcodes [ 73*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 74*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 75*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 76*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 77*9880d681SAndroid Build Coastguard Worker@ CHECK: } 78*9880d681SAndroid Build Coastguard Worker@ CHECK: Entry { 79*9880d681SAndroid Build Coastguard Worker@ CHECK: ExceptionHandlingTable: .ARM.extab 80*9880d681SAndroid Build Coastguard Worker@ CHECK: Model: Compact 81*9880d681SAndroid Build Coastguard Worker@ CHECK: PersonalityIndex: 1 82*9880d681SAndroid Build Coastguard Worker@ CHECK: Opcodes [ 83*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x9B ; vsp = r11 84*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x40 ; vsp = vsp - 4 85*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x84 0x80 ; pop {fp, lr} 86*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 87*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 88*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 89*9880d681SAndroid Build Coastguard Worker@ CHECK: } 90*9880d681SAndroid Build Coastguard Worker@ CHECK: Entry { 91*9880d681SAndroid Build Coastguard Worker@ CHECK: Model: Compact (Inline) 92*9880d681SAndroid Build Coastguard Worker@ CHECK: PersonalityIndex: 0 93*9880d681SAndroid Build Coastguard Worker@ CHECK: Opcodes [ 94*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x80 0x00 ; refuse to unwind 95*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xB0 ; finish 96*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 97*9880d681SAndroid Build Coastguard Worker@ CHECK: } 98*9880d681SAndroid Build Coastguard Worker@ CHECK: Entry { 99*9880d681SAndroid Build Coastguard Worker@ CHECK: Model: Compact (Inline) 100*9880d681SAndroid Build Coastguard Worker@ CHECK: PersonalityIndex: 0 101*9880d681SAndroid Build Coastguard Worker@ CHECK: Opcodes [ 102*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x9B ; vsp = r11 103*9880d681SAndroid Build Coastguard Worker@ CHECK: 0x4D ; vsp = vsp - 56 104*9880d681SAndroid Build Coastguard Worker@ CHECK: 0xC2 ; pop {wR10, wR11, wR12} 105*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 106*9880d681SAndroid Build Coastguard Worker@ CHECK: } 107*9880d681SAndroid Build Coastguard Worker@ CHECK: ] 108*9880d681SAndroid Build Coastguard Worker@ CHECK: } 109*9880d681SAndroid Build Coastguard Worker@ CHECK: } 110*9880d681SAndroid Build Coastguard Worker 111