328 lines · plain
1@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj %s -o %t2@ RUN: llvm-readobj -u %t | FileCheck --check-prefixes=CHECK,SYM %s3 4@@ If .symtab doesn't exist, we can still dump some information.5@ RUN: llvm-objcopy --allow-broken-links --strip-all %t - | llvm-readobj -u - | FileCheck %s6 7 .syntax unified8 9 .cpu cortex-a810 .fpu neon11 12 .section .personality13 14 .type __personality,%function15__personality:16 .fnstart17 bkpt18 .fnend19 20 21 .section .personality022 23 .type personality0,%function24personality0:25 .fnstart26 bx lr27 .fnend28 29 30 .section .personality131 32 .type personality1,%function33personality1:34 .fnstart35 .pad #0x10036 sub sp, sp, #0x10037 .save {r0-r11}38 push {r0-r11}39 pop {r0-r11}40 add sp, sp, #0x10041 bx lr42 .fnend43 44 45 .section .custom_personality46 47 .type custom_personality,%function48custom_personality:49 .fnstart50 .personality __personality51 bx lr52 .fnend53 54 55 .section .opcodes56 57 .type opcodes,%function58opcodes:59 .fnstart60 .vsave {d8-d12}61 vpush {d8-d12}62 vpop {d8-d12}63 bx lr64 .fnend65 66 67 .section .multiple68 69 .type function0,%function70function0:71 .fnstart72 bx lr73 .fnend74 75 .type function1,%function76function1:77 .fnstart78 .personality __personality79 bx lr80 .fnend81 82 .type function2,%function83function2:84 .fnstart85 bx lr86 .fnend87 88 .section .raw89 90 .type raw,%function91 .thumb_func92raw:93 .fnstart94 .unwind_raw 12, 0x0295 .unwind_raw -12, 0x4296 .unwind_raw 0, 0x80, 0x0097 .unwind_raw 4, 0x81, 0x0098 .unwind_raw 4, 0x80, 0x0199 .unwind_raw 8, 0x80, 0xc0100 .unwind_raw 12, 0x84, 0xc0101 .unwind_raw 0, 0x91102 .unwind_raw 8, 0xa1103 .unwind_raw 12, 0xa9104 .unwind_raw 0, 0xb0105 .unwind_raw 4, 0xb4106 .unwind_raw 4, 0xb1, 0x01107 .unwind_raw 0xa04, 0xb2, 0x80, 0x04108 .unwind_raw 24, 0xb3, 0x12109 .unwind_raw 24, 0xba110 .unwind_raw 24, 0xc2111 .unwind_raw 24, 0xc6, 0x02112 .unwind_raw 8, 0xc7, 0x03113 .unwind_raw 24, 0xc8, 0x02114 .unwind_raw 24, 0xc9, 0x02115 .unwind_raw 64, 0xd7116 .fnend117 118 .section .spare119 120 .type spare,%function121spare:122 .fnstart123 .unwind_raw 4, 0x00124 .unwind_raw -4, 0x40125 .unwind_raw 0, 0x80, 0x00126 .unwind_raw 4, 0x88, 0x00127 .unwind_raw 0, 0x91128 .unwind_raw 0, 0x9d129 .unwind_raw 0, 0x9f130 .unwind_raw 0, 0xa0131 .unwind_raw 0, 0xa8132 .unwind_raw 0, 0xb0133 .unwind_raw 4, 0xb1, 0x01134 .unwind_raw 0, 0xb1, 0x10135 .unwind_raw 0x204, 0xb2, 0x00136 .unwind_raw 16, 0xb3, 0x00137 .unwind_raw 16, 0xb8138 .unwind_raw 4, 0xc0139 .unwind_raw 4, 0xc6, 0x00140 .unwind_raw 4, 0xc7, 0x00141 .unwind_raw 4, 0xc7, 0x01142 .unwind_raw 0, 0xc7, 0x10143 .unwind_raw 16, 0xc8, 0x00144 .unwind_raw 16, 0xc9, 0x00145 .unwind_raw 0, 0xca146 .unwind_raw 16, 0xd0147 .unwind_raw 0, 0xd8148 .fnend149 150@ CHECK: UnwindInformation {151@ CHECK: UnwindIndexTable {152@ CHECK: SectionName: .ARM.exidx.personality153@ CHECK: Entries [154@ CHECK: Entry {155@ CHECK: FunctionAddress: 0x0156@ SYM: FunctionName: __personality157@ CHECK: Model: Compact (Inline)158@ CHECK: PersonalityIndex: 0159@ CHECK: Opcodes [160@ CHECK: 0xB0 ; finish161@ CHECK: 0xB0 ; finish162@ CHECK: 0xB0 ; finish163@ CHECK: ]164@ CHECK: }165@ CHECK: ]166@ CHECK: }167@ CHECK: UnwindIndexTable {168@ CHECK: SectionName: .ARM.exidx.personality0169@ CHECK: Entries [170@ CHECK: Entry {171@ CHECK: FunctionAddress: 0x0172@ SYM: FunctionName: personality0173@ CHECK: Model: Compact (Inline)174@ CHECK: PersonalityIndex: 0175@ CHECK: Opcodes [176@ CHECK: 0xB0 ; finish177@ CHECK: 0xB0 ; finish178@ CHECK: 0xB0 ; finish179@ CHECK: ]180@ CHECK: }181@ CHECK: ]182@ CHECK: }183@ CHECK: UnwindIndexTable {184@ CHECK: SectionName: .ARM.exidx.personality1185@ CHECK: Entries [186@ CHECK: Entry {187@ CHECK: FunctionAddress: 0x0188@ SYM: FunctionName: personality1189@ SYM: ExceptionHandlingTable: .ARM.extab.personality1190@ SYM: TableEntryOffset: 0x0191@ SYM: Model: Compact192@ SYM: PersonalityIndex: 1193@ SYM: Opcodes [194@ SYM: 0xB1 0x0F ; pop {r0, r1, r2, r3}195@ SYM: 0xA7 ; pop {r4, r5, r6, r7, r8, r9, r10, fp}196@ SYM: 0x3F ; vsp = vsp + 256197@ SYM: 0xB0 ; finish198@ SYM: 0xB0 ; finish199@ SYM: ]200@ CHECK: }201@ CHECK: ]202@ CHECK: }203@ CHECK: UnwindIndexTable {204@ CHECK: SectionName: .ARM.exidx.custom_personality205@ CHECK: Entries [206@ CHECK: Entry {207@ CHECK: FunctionAddress: 0x0208@ SYM: FunctionName: custom_personality209@ SYM: ExceptionHandlingTable: .ARM.extab.custom_personality210@ SYM: TableEntryOffset: 0x0211@ SYM: Model: Generic212@ SYM: PersonalityRoutineAddress: 0x0213@ CHECK: }214@ CHECK: ]215@ CHECK: }216@ CHECK: UnwindIndexTable {217@ CHECK: SectionName: .ARM.exidx.opcodes218@ CHECK: Entries [219@ CHECK: Entry {220@ CHECK: FunctionAddress: 0x0221@ SYM: FunctionName: opcodes222@ CHECK: Model: Compact (Inline)223@ CHECK: PersonalityIndex: 0224@ CHECK: Opcodes [225@ CHECK: 0xC9 0x84 ; pop {d8, d9, d10, d11, d12}226@ CHECK: 0xB0 ; finish227@ CHECK: ]228@ CHECK: }229@ CHECK: ]230@ CHECK: }231@ CHECK: UnwindIndexTable {232@ CHECK: SectionName: .ARM.exidx.multiple233@ CHECK: Entries [234@ CHECK: Entry {235@ CHECK: FunctionAddress: 0x0236@ SYM: FunctionName: function0237@ CHECK: Model: Compact (Inline)238@ CHECK: PersonalityIndex: 0239@ CHECK: Opcodes [240@ CHECK: 0xB0 ; finish241@ CHECK: 0xB0 ; finish242@ CHECK: 0xB0 ; finish243@ CHECK: ]244@ CHECK: }245@ CHECK: Entry {246@ CHECK: FunctionAddress: 0x4247@ SYM: FunctionName: function1248@ SYM: ExceptionHandlingTable: .ARM.extab.multiple249@ SYM: Model: Generic250@ SYM: PersonalityRoutineAddress: 0x0251@ CHECK: }252@ CHECK: Entry {253@ CHECK: FunctionAddress: 0x8254@ SYM: FunctionName: function2255@ CHECK: Model: Compact (Inline)256@ CHECK: PersonalityIndex: 0257@ CHECK: Opcodes [258@ CHECK: 0xB0 ; finish259@ CHECK: 0xB0 ; finish260@ CHECK: 0xB0 ; finish261@ CHECK: ]262@ CHECK: }263@ CHECK: ]264@ CHECK: }265@ CHECK: UnwindIndexTable {266@ CHECK: SectionName: .ARM.exidx.raw267@ CHECK: Entries [268@ SYM: Opcodes [269@ SYM: 0xD7 ; pop {d8, d9, d10, d11, d12, d13, d14, d15}270@ SYM: 0xC9 0x02 ; pop {d0, d1, d2}271@ SYM: 0xC8 0x02 ; pop {d16, d17, d18}272@ SYM: 0xC7 0x03 ; pop {wCGR0, wCGR1}273@ SYM: 0xC6 0x02 ; pop {wR0, wR1, wR2}274@ SYM: 0xC2 ; pop {wR10, wR11, wR12}275@ SYM: 0xBA ; pop {d8, d9, d10}276@ SYM: 0xB3 0x12 ; pop {d1, d2, d3}277@ SYM: 0xB2 0x80 0x04 ; vsp = vsp + 2564278@ SYM: 0xB1 0x01 ; pop {r0}279@ SYM: 0xB4 ; pop ra_auth_code280@ SYM: 0xB0 ; finish281@ SYM: 0xA9 ; pop {r4, r5, lr}282@ SYM: 0xA1 ; pop {r4, r5}283@ SYM: 0x91 ; vsp = r1284@ SYM: 0x84 0xC0 ; pop {r10, fp, lr}285@ SYM: 0x80 0xC0 ; pop {r10, fp}286@ SYM: 0x80 0x01 ; pop {r4}287@ SYM: 0x81 0x00 ; pop {ip}288@ SYM: 0x80 0x00 ; refuse to unwind289@ SYM: 0x42 ; vsp = vsp - 12290@ SYM: 0x02 ; vsp = vsp + 12291@ SYM: ]292@ CHECK: ]293@ CHECK: }294@ CHECK: UnwindIndexTable {295@ CHECK: SectionName: .ARM.exidx.spare296@ CHECK: Entries [297@ SYM: Opcodes [298@ SYM: 0xD8 ; spare299@ SYM: 0xD0 ; pop {d8}300@ SYM: 0xCA ; spare301@ SYM: 0xC9 0x00 ; pop {d0}302@ SYM: 0xC8 0x00 ; pop {d16}303@ SYM: 0xC7 0x10 ; spare304@ SYM: 0xC7 0x01 ; pop {wCGR0}305@ SYM: 0xC7 0x00 ; spare306@ SYM: 0xC6 0x00 ; pop {wR0}307@ SYM: 0xC0 ; pop {wR10}308@ SYM: 0xB8 ; pop {d8}309@ SYM: 0xB3 0x00 ; pop {d0}310@ SYM: 0xB2 0x00 ; vsp = vsp + 516311@ SYM: 0xB1 0x10 ; spare312@ SYM: 0xB1 0x01 ; pop {r0}313@ SYM: 0xB0 ; finish314@ SYM: 0xA8 ; pop {r4, lr}315@ SYM: 0xA0 ; pop {r4}316@ SYM: 0x9F ; reserved (WiMMX MOVrr)317@ SYM: 0x9D ; reserved (ARM MOVrr)318@ SYM: 0x91 ; vsp = r1319@ SYM: 0x88 0x00 ; pop {pc}320@ SYM: 0x80 0x00 ; refuse to unwind321@ SYM: 0x40 ; vsp = vsp - 4322@ SYM: 0x00 ; vsp = vsp + 4323@ SYM: ]324@ CHECK: ]325@ CHECK: }326@ CHECK: }327 328