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