Lines Matching refs:Decoder

23 // This layout is parsed by Decoder::dumpPackedEntry.  No unwind bytecode is
37 // describing how to unwind the function (c.f. Decoder::decodeOpcodes).
45 // This layout is parsed by Decoder::dumpUnpackedEntry. Such an entry must
51 // up the bulk of the Decoder.
115 const size_t Decoder::PDataEntrySize = sizeof(RuntimeFunction);
118 const Decoder::RingEntry Decoder::Ring[] = {
119 { 0x80, 0x00, 1, &Decoder::opcode_0xxxxxxx }, // UOP_STACK_FREE (16-bit)
120 { 0xc0, 0x80, 2, &Decoder::opcode_10Lxxxxx }, // UOP_POP (32-bit)
121 { 0xf0, 0xc0, 1, &Decoder::opcode_1100xxxx }, // UOP_STACK_SAVE (16-bit)
122 { 0xf8, 0xd0, 1, &Decoder::opcode_11010Lxx }, // UOP_POP (16-bit)
123 { 0xf8, 0xd8, 1, &Decoder::opcode_11011Lxx }, // UOP_POP (32-bit)
124 { 0xf8, 0xe0, 1, &Decoder::opcode_11100xxx }, // UOP_VPOP (32-bit)
125 { 0xfc, 0xe8, 2, &Decoder::opcode_111010xx }, // UOP_STACK_FREE (32-bit)
126 { 0xfe, 0xec, 2, &Decoder::opcode_1110110L }, // UOP_POP (16-bit)
127 { 0xff, 0xee, 2, &Decoder::opcode_11101110 }, // UOP_MICROSOFT_SPECIFIC (16-bit)
132 { 0xff, 0xef, 2, &Decoder::opcode_11101111 }, // UOP_LDRPC_POSTINC (32-bit)
133 { 0xff, 0xf5, 2, &Decoder::opcode_11110101 }, // UOP_VPOP (32-bit)
134 { 0xff, 0xf6, 2, &Decoder::opcode_11110110 }, // UOP_VPOP (32-bit)
135 { 0xff, 0xf7, 3, &Decoder::opcode_11110111 }, // UOP_STACK_RESTORE (16-bit)
136 { 0xff, 0xf8, 4, &Decoder::opcode_11111000 }, // UOP_STACK_RESTORE (16-bit)
137 { 0xff, 0xf9, 3, &Decoder::opcode_11111001 }, // UOP_STACK_RESTORE (32-bit)
138 { 0xff, 0xfa, 4, &Decoder::opcode_11111010 }, // UOP_STACK_RESTORE (32-bit)
139 { 0xff, 0xfb, 1, &Decoder::opcode_11111011 }, // UOP_NOP (16-bit)
140 { 0xff, 0xfc, 1, &Decoder::opcode_11111100 }, // UOP_NOP (32-bit)
141 { 0xff, 0xfd, 1, &Decoder::opcode_11111101 }, // UOP_NOP (16-bit) / END
142 { 0xff, 0xfe, 1, &Decoder::opcode_11111110 }, // UOP_NOP (32-bit) / END
143 { 0xff, 0xff, 1, &Decoder::opcode_11111111 }, // UOP_END
148 const Decoder::RingEntry Decoder::Ring64[] = {
149 {0xe0, 0x00, 1, &Decoder::opcode_alloc_s},
150 {0xe0, 0x20, 1, &Decoder::opcode_save_r19r20_x},
151 {0xc0, 0x40, 1, &Decoder::opcode_save_fplr},
152 {0xc0, 0x80, 1, &Decoder::opcode_save_fplr_x},
153 {0xf8, 0xc0, 2, &Decoder::opcode_alloc_m},
154 {0xfc, 0xc8, 2, &Decoder::opcode_save_regp},
155 {0xfc, 0xcc, 2, &Decoder::opcode_save_regp_x},
156 {0xfc, 0xd0, 2, &Decoder::opcode_save_reg},
157 {0xfe, 0xd4, 2, &Decoder::opcode_save_reg_x},
158 {0xfe, 0xd6, 2, &Decoder::opcode_save_lrpair},
159 {0xfe, 0xd8, 2, &Decoder::opcode_save_fregp},
160 {0xfe, 0xda, 2, &Decoder::opcode_save_fregp_x},
161 {0xfe, 0xdc, 2, &Decoder::opcode_save_freg},
162 {0xff, 0xde, 2, &Decoder::opcode_save_freg_x},
163 {0xff, 0xe0, 4, &Decoder::opcode_alloc_l},
164 {0xff, 0xe1, 1, &Decoder::opcode_setfp},
165 {0xff, 0xe2, 2, &Decoder::opcode_addfp},
166 {0xff, 0xe3, 1, &Decoder::opcode_nop},
167 {0xff, 0xe4, 1, &Decoder::opcode_end},
168 {0xff, 0xe5, 1, &Decoder::opcode_end_c},
169 {0xff, 0xe6, 1, &Decoder::opcode_save_next},
170 {0xff, 0xe7, 3, &Decoder::opcode_save_any_reg},
171 {0xff, 0xe8, 1, &Decoder::opcode_trap_frame},
172 {0xff, 0xe9, 1, &Decoder::opcode_machine_frame},
173 {0xff, 0xea, 1, &Decoder::opcode_context},
174 {0xff, 0xeb, 1, &Decoder::opcode_ec_context},
175 {0xff, 0xec, 1, &Decoder::opcode_clear_unwound_to_call},
176 {0xff, 0xfc, 1, &Decoder::opcode_pac_sign_lr},
205 void Decoder::printGPRMask(uint16_t GPRMask) {
216 void Decoder::printVFPMask(uint32_t VFPMask) {
224 Decoder::getSectionContaining(const COFFObjectFile &COFF, uint64_t VA) {
235 ErrorOr<object::SymbolRef> Decoder::getSymbol(const COFFObjectFile &COFF,
253 ErrorOr<SymbolRef> Decoder::getRelocatedSymbol(const COFFObjectFile &,
264 SymbolRef Decoder::getPreferredSymbol(const COFFObjectFile &COFF, SymbolRef Sym,
291 ErrorOr<SymbolRef> Decoder::getSymbolForLocation(
328 bool Decoder::opcode_0xxxxxxx(const uint8_t *OC, unsigned &Offset,
339 bool Decoder::opcode_10Lxxxxx(const uint8_t *OC, unsigned &Offset,
358 bool Decoder::opcode_1100xxxx(const uint8_t *OC, unsigned &Offset,
370 bool Decoder::opcode_11010Lxx(const uint8_t *OC, unsigned &Offset,
387 bool Decoder::opcode_11011Lxx(const uint8_t *OC, unsigned &Offset,
404 bool Decoder::opcode_11100xxx(const uint8_t *OC, unsigned &Offset,
418 bool Decoder::opcode_111010xx(const uint8_t *OC, unsigned &Offset,
431 bool Decoder::opcode_1110110L(const uint8_t *OC, unsigned &Offset,
445 bool Decoder::opcode_11101110(const uint8_t *OC, unsigned &Offset,
461 bool Decoder::opcode_11101111(const uint8_t *OC, unsigned &Offset,
479 bool Decoder::opcode_11110101(const uint8_t *OC, unsigned &Offset,
494 bool Decoder::opcode_11110110(const uint8_t *OC, unsigned &Offset,
509 bool Decoder::opcode_11110111(const uint8_t *OC, unsigned &Offset,
522 bool Decoder::opcode_11111000(const uint8_t *OC, unsigned &Offset,
537 bool Decoder::opcode_11111001(const uint8_t *OC, unsigned &Offset,
550 bool Decoder::opcode_11111010(const uint8_t *OC, unsigned &Offset,
565 bool Decoder::opcode_11111011(const uint8_t *OC, unsigned &Offset,
572 bool Decoder::opcode_11111100(const uint8_t *OC, unsigned &Offset,
579 bool Decoder::opcode_11111101(const uint8_t *OC, unsigned &Offset,
586 bool Decoder::opcode_11111110(const uint8_t *OC, unsigned &Offset,
593 bool Decoder::opcode_11111111(const uint8_t *OC, unsigned &Offset,
600 bool Decoder::opcode_alloc_s(const uint8_t *OC, unsigned &Offset,
610 bool Decoder::opcode_save_r19r20_x(const uint8_t *OC, unsigned &Offset,
623 bool Decoder::opcode_save_fplr(const uint8_t *OC, unsigned &Offset,
633 bool Decoder::opcode_save_fplr_x(const uint8_t *OC, unsigned &Offset,
646 bool Decoder::opcode_alloc_m(const uint8_t *OC, unsigned &Offset,
659 bool Decoder::opcode_save_regp(const uint8_t *OC, unsigned &Offset,
674 bool Decoder::opcode_save_regp_x(const uint8_t *OC, unsigned &Offset,
695 bool Decoder::opcode_save_reg(const uint8_t *OC, unsigned &Offset,
710 bool Decoder::opcode_save_reg_x(const uint8_t *OC, unsigned &Offset,
727 bool Decoder::opcode_save_lrpair(const uint8_t *OC, unsigned &Offset,
743 bool Decoder::opcode_save_fregp(const uint8_t *OC, unsigned &Offset,
758 bool Decoder::opcode_save_fregp_x(const uint8_t *OC, unsigned &Offset,
777 bool Decoder::opcode_save_freg(const uint8_t *OC, unsigned &Offset,
792 bool Decoder::opcode_save_freg_x(const uint8_t *OC, unsigned &Offset,
808 bool Decoder::opcode_alloc_l(const uint8_t *OC, unsigned &Offset,
821 bool Decoder::opcode_setfp(const uint8_t *OC, unsigned &Offset, unsigned Length,
830 bool Decoder::opcode_addfp(const uint8_t *OC, unsigned &Offset, unsigned Length,
842 bool Decoder::opcode_nop(const uint8_t *OC, unsigned &Offset, unsigned Length,
849 bool Decoder::opcode_end(const uint8_t *OC, unsigned &Offset, unsigned Length,
856 bool Decoder::opcode_end_c(const uint8_t *OC, unsigned &Offset, unsigned Length,
863 bool Decoder::opcode_save_next(const uint8_t *OC, unsigned &Offset,
874 bool Decoder::opcode_save_any_reg(const uint8_t *OC, unsigned &Offset,
951 bool Decoder::opcode_trap_frame(const uint8_t *OC, unsigned &Offset,
958 bool Decoder::opcode_machine_frame(const uint8_t *OC, unsigned &Offset,
966 bool Decoder::opcode_context(const uint8_t *OC, unsigned &Offset,
973 bool Decoder::opcode_ec_context(const uint8_t *OC, unsigned &Offset,
980 bool Decoder::opcode_clear_unwound_to_call(const uint8_t *OC, unsigned &Offset,
988 bool Decoder::opcode_pac_sign_lr(const uint8_t *OC, unsigned &Offset,
998 void Decoder::decodeOpcodes(ArrayRef<uint8_t> Opcodes, unsigned Offset,
1028 bool Decoder::dumpXDataRecord(const COFFObjectFile &COFF,
1139 bool Decoder::dumpUnpackedEntry(const COFFObjectFile &COFF,
1207 bool Decoder::dumpPackedEntry(const object::COFFObjectFile &COFF,
1305 bool Decoder::dumpPackedARM64Entry(const object::COFFObjectFile &COFF,
1438 bool Decoder::dumpProcedureDataEntry(const COFFObjectFile &COFF,
1456 void Decoder::dumpProcedureData(const COFFObjectFile &COFF,
1472 Error Decoder::dumpProcedureData(const COFFObjectFile &COFF) {