blob: 4c69b3d253aa8bd82252080f4fbb995e8f9ff90d [file] [log] [blame]
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef _LIBUNWINDSTACK_DWARF_OP_H
18#define _LIBUNWINDSTACK_DWARF_OP_H
19
20#include <stdint.h>
21
22#include <deque>
23#include <string>
24#include <type_traits>
25#include <vector>
26
Christopher Ferris2fcf4cf2018-01-23 17:52:23 -080027#include <unwindstack/DwarfError.h>
28
Christopher Ferris55d22ef2017-04-04 10:41:31 -070029#include "DwarfEncoding.h"
Christopher Ferris559c7f22018-02-12 20:18:03 -080030#include "RegsInfo.h"
Christopher Ferrisd226a512017-07-14 10:37:19 -070031
32namespace unwindstack {
Christopher Ferris55d22ef2017-04-04 10:41:31 -070033
Christopher Ferris55d22ef2017-04-04 10:41:31 -070034// Forward declarations.
35class DwarfMemory;
36class Memory;
37template <typename AddressType>
Christopher Ferris7b8e4672017-06-01 17:55:25 -070038class RegsImpl;
Christopher Ferris55d22ef2017-04-04 10:41:31 -070039
40template <typename AddressType>
41class DwarfOp {
42 // Signed version of AddressType
43 typedef typename std::make_signed<AddressType>::type SignedType;
44
45 struct OpCallback {
46 const char* name;
47 bool (DwarfOp::*handle_func)();
Christopher Ferris55d22ef2017-04-04 10:41:31 -070048 uint8_t num_required_stack_values;
49 uint8_t num_operands;
50 uint8_t operands[2];
51 };
52
53 public:
54 DwarfOp(DwarfMemory* memory, Memory* regular_memory)
55 : memory_(memory), regular_memory_(regular_memory) {}
56 virtual ~DwarfOp() = default;
57
Christopher Ferris559c7f22018-02-12 20:18:03 -080058 bool Decode();
Christopher Ferris55d22ef2017-04-04 10:41:31 -070059
Christopher Ferris559c7f22018-02-12 20:18:03 -080060 bool Eval(uint64_t start, uint64_t end);
Christopher Ferris55d22ef2017-04-04 10:41:31 -070061
62 void GetLogInfo(uint64_t start, uint64_t end, std::vector<std::string>* lines);
63
64 AddressType StackAt(size_t index) { return stack_[index]; }
65 size_t StackSize() { return stack_.size(); }
66
Christopher Ferris559c7f22018-02-12 20:18:03 -080067 void set_regs_info(RegsInfo<AddressType>* regs_info) { regs_info_ = regs_info; }
Christopher Ferris55d22ef2017-04-04 10:41:31 -070068
Christopher Ferris2fcf4cf2018-01-23 17:52:23 -080069 const DwarfErrorData& last_error() { return last_error_; }
70 DwarfErrorCode LastErrorCode() { return last_error_.code; }
71 uint64_t LastErrorAddress() { return last_error_.address; }
Christopher Ferris55d22ef2017-04-04 10:41:31 -070072
Christopher Ferris559c7f22018-02-12 20:18:03 -080073 bool dex_pc_set() { return dex_pc_set_; }
74
Christopher Ferris55d22ef2017-04-04 10:41:31 -070075 bool is_register() { return is_register_; }
76
77 uint8_t cur_op() { return cur_op_; }
78
79 Memory* regular_memory() { return regular_memory_; }
80
81 protected:
82 AddressType OperandAt(size_t index) { return operands_[index]; }
83 size_t OperandsSize() { return operands_.size(); }
84
85 AddressType StackPop() {
86 AddressType value = stack_.front();
87 stack_.pop_front();
88 return value;
89 }
90
91 private:
92 DwarfMemory* memory_;
93 Memory* regular_memory_;
94
Christopher Ferris559c7f22018-02-12 20:18:03 -080095 RegsInfo<AddressType>* regs_info_;
96 bool dex_pc_set_ = false;
Christopher Ferris55d22ef2017-04-04 10:41:31 -070097 bool is_register_ = false;
Christopher Ferris2fcf4cf2018-01-23 17:52:23 -080098 DwarfErrorData last_error_{DWARF_ERROR_NONE, 0};
Christopher Ferris55d22ef2017-04-04 10:41:31 -070099 uint8_t cur_op_;
100 std::vector<AddressType> operands_;
101 std::deque<AddressType> stack_;
102
103 inline AddressType bool_to_dwarf_bool(bool value) { return value ? 1 : 0; }
104
105 // Op processing functions.
106 bool op_deref();
107 bool op_deref_size();
108 bool op_push();
109 bool op_dup();
110 bool op_drop();
111 bool op_over();
112 bool op_pick();
113 bool op_swap();
114 bool op_rot();
115 bool op_abs();
116 bool op_and();
117 bool op_div();
118 bool op_minus();
119 bool op_mod();
120 bool op_mul();
121 bool op_neg();
122 bool op_not();
123 bool op_or();
124 bool op_plus();
125 bool op_plus_uconst();
126 bool op_shl();
127 bool op_shr();
128 bool op_shra();
129 bool op_xor();
130 bool op_bra();
131 bool op_eq();
132 bool op_ge();
133 bool op_gt();
134 bool op_le();
135 bool op_lt();
136 bool op_ne();
137 bool op_skip();
138 bool op_lit();
139 bool op_reg();
140 bool op_regx();
141 bool op_breg();
142 bool op_bregx();
143 bool op_nop();
144 bool op_not_implemented();
145
146 constexpr static OpCallback kCallbackTable[256] = {
Christopher Ferris559c7f22018-02-12 20:18:03 -0800147 {nullptr, nullptr, 0, 0, {}}, // 0x00 illegal op
148 {nullptr, nullptr, 0, 0, {}}, // 0x01 illegal op
149 {nullptr, nullptr, 0, 0, {}}, // 0x02 illegal op
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700150 {
151 // 0x03 DW_OP_addr
152 "DW_OP_addr",
153 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700154 0,
155 1,
156 {DW_EH_PE_absptr},
157 },
Christopher Ferris559c7f22018-02-12 20:18:03 -0800158 {nullptr, nullptr, 0, 0, {}}, // 0x04 illegal op
159 {nullptr, nullptr, 0, 0, {}}, // 0x05 illegal op
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700160 {
161 // 0x06 DW_OP_deref
162 "DW_OP_deref",
163 &DwarfOp::op_deref,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700164 1,
165 0,
166 {},
167 },
Christopher Ferris559c7f22018-02-12 20:18:03 -0800168 {nullptr, nullptr, 0, 0, {}}, // 0x07 illegal op
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700169 {
170 // 0x08 DW_OP_const1u
171 "DW_OP_const1u",
172 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700173 0,
174 1,
175 {DW_EH_PE_udata1},
176 },
177 {
178 // 0x09 DW_OP_const1s
179 "DW_OP_const1s",
180 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700181 0,
182 1,
183 {DW_EH_PE_sdata1},
184 },
185 {
186 // 0x0a DW_OP_const2u
187 "DW_OP_const2u",
188 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700189 0,
190 1,
191 {DW_EH_PE_udata2},
192 },
193 {
194 // 0x0b DW_OP_const2s
195 "DW_OP_const2s",
196 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700197 0,
198 1,
199 {DW_EH_PE_sdata2},
200 },
201 {
202 // 0x0c DW_OP_const4u
203 "DW_OP_const4u",
204 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700205 0,
206 1,
207 {DW_EH_PE_udata4},
208 },
209 {
210 // 0x0d DW_OP_const4s
211 "DW_OP_const4s",
212 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700213 0,
214 1,
215 {DW_EH_PE_sdata4},
216 },
217 {
218 // 0x0e DW_OP_const8u
219 "DW_OP_const8u",
220 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700221 0,
222 1,
223 {DW_EH_PE_udata8},
224 },
225 {
226 // 0x0f DW_OP_const8s
227 "DW_OP_const8s",
228 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700229 0,
230 1,
231 {DW_EH_PE_sdata8},
232 },
233 {
234 // 0x10 DW_OP_constu
235 "DW_OP_constu",
236 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700237 0,
238 1,
239 {DW_EH_PE_uleb128},
240 },
241 {
242 // 0x11 DW_OP_consts
243 "DW_OP_consts",
244 &DwarfOp::op_push,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700245 0,
246 1,
247 {DW_EH_PE_sleb128},
248 },
249 {
250 // 0x12 DW_OP_dup
251 "DW_OP_dup",
252 &DwarfOp::op_dup,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700253 1,
254 0,
255 {},
256 },
257 {
258 // 0x13 DW_OP_drop
259 "DW_OP_drop",
260 &DwarfOp::op_drop,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700261 1,
262 0,
263 {},
264 },
265 {
266 // 0x14 DW_OP_over
267 "DW_OP_over",
268 &DwarfOp::op_over,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700269 2,
270 0,
271 {},
272 },
273 {
274 // 0x15 DW_OP_pick
275 "DW_OP_pick",
276 &DwarfOp::op_pick,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700277 0,
278 1,
279 {DW_EH_PE_udata1},
280 },
281 {
282 // 0x16 DW_OP_swap
283 "DW_OP_swap",
284 &DwarfOp::op_swap,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700285 2,
286 0,
287 {},
288 },
289 {
290 // 0x17 DW_OP_rot
291 "DW_OP_rot",
292 &DwarfOp::op_rot,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700293 3,
294 0,
295 {},
296 },
297 {
298 // 0x18 DW_OP_xderef
299 "DW_OP_xderef",
300 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700301 2,
302 0,
303 {},
304 },
305 {
306 // 0x19 DW_OP_abs
307 "DW_OP_abs",
308 &DwarfOp::op_abs,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700309 1,
310 0,
311 {},
312 },
313 {
314 // 0x1a DW_OP_and
315 "DW_OP_and",
316 &DwarfOp::op_and,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700317 2,
318 0,
319 {},
320 },
321 {
322 // 0x1b DW_OP_div
323 "DW_OP_div",
324 &DwarfOp::op_div,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700325 2,
326 0,
327 {},
328 },
329 {
330 // 0x1c DW_OP_minus
331 "DW_OP_minus",
332 &DwarfOp::op_minus,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700333 2,
334 0,
335 {},
336 },
337 {
338 // 0x1d DW_OP_mod
339 "DW_OP_mod",
340 &DwarfOp::op_mod,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700341 2,
342 0,
343 {},
344 },
345 {
346 // 0x1e DW_OP_mul
347 "DW_OP_mul",
348 &DwarfOp::op_mul,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700349 2,
350 0,
351 {},
352 },
353 {
354 // 0x1f DW_OP_neg
355 "DW_OP_neg",
356 &DwarfOp::op_neg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700357 1,
358 0,
359 {},
360 },
361 {
362 // 0x20 DW_OP_not
363 "DW_OP_not",
364 &DwarfOp::op_not,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700365 1,
366 0,
367 {},
368 },
369 {
370 // 0x21 DW_OP_or
371 "DW_OP_or",
372 &DwarfOp::op_or,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700373 2,
374 0,
375 {},
376 },
377 {
378 // 0x22 DW_OP_plus
379 "DW_OP_plus",
380 &DwarfOp::op_plus,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700381 2,
382 0,
383 {},
384 },
385 {
386 // 0x23 DW_OP_plus_uconst
387 "DW_OP_plus_uconst",
388 &DwarfOp::op_plus_uconst,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700389 1,
390 1,
391 {DW_EH_PE_uleb128},
392 },
393 {
394 // 0x24 DW_OP_shl
395 "DW_OP_shl",
396 &DwarfOp::op_shl,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700397 2,
398 0,
399 {},
400 },
401 {
402 // 0x25 DW_OP_shr
403 "DW_OP_shr",
404 &DwarfOp::op_shr,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700405 2,
406 0,
407 {},
408 },
409 {
410 // 0x26 DW_OP_shra
411 "DW_OP_shra",
412 &DwarfOp::op_shra,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700413 2,
414 0,
415 {},
416 },
417 {
418 // 0x27 DW_OP_xor
419 "DW_OP_xor",
420 &DwarfOp::op_xor,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700421 2,
422 0,
423 {},
424 },
425 {
426 // 0x28 DW_OP_bra
427 "DW_OP_bra",
428 &DwarfOp::op_bra,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700429 1,
430 1,
431 {DW_EH_PE_sdata2},
432 },
433 {
434 // 0x29 DW_OP_eq
435 "DW_OP_eq",
436 &DwarfOp::op_eq,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700437 2,
438 0,
439 {},
440 },
441 {
442 // 0x2a DW_OP_ge
443 "DW_OP_ge",
444 &DwarfOp::op_ge,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700445 2,
446 0,
447 {},
448 },
449 {
450 // 0x2b DW_OP_gt
451 "DW_OP_gt",
452 &DwarfOp::op_gt,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700453 2,
454 0,
455 {},
456 },
457 {
458 // 0x2c DW_OP_le
459 "DW_OP_le",
460 &DwarfOp::op_le,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700461 2,
462 0,
463 {},
464 },
465 {
466 // 0x2d DW_OP_lt
467 "DW_OP_lt",
468 &DwarfOp::op_lt,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700469 2,
470 0,
471 {},
472 },
473 {
474 // 0x2e DW_OP_ne
475 "DW_OP_ne",
476 &DwarfOp::op_ne,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700477 2,
478 0,
479 {},
480 },
481 {
482 // 0x2f DW_OP_skip
483 "DW_OP_skip",
484 &DwarfOp::op_skip,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700485 0,
486 1,
487 {DW_EH_PE_sdata2},
488 },
489 {
490 // 0x30 DW_OP_lit0
491 "DW_OP_lit0",
492 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700493 0,
494 0,
495 {},
496 },
497 {
498 // 0x31 DW_OP_lit1
499 "DW_OP_lit1",
500 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700501 0,
502 0,
503 {},
504 },
505 {
506 // 0x32 DW_OP_lit2
507 "DW_OP_lit2",
508 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700509 0,
510 0,
511 {},
512 },
513 {
514 // 0x33 DW_OP_lit3
515 "DW_OP_lit3",
516 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700517 0,
518 0,
519 {},
520 },
521 {
522 // 0x34 DW_OP_lit4
523 "DW_OP_lit4",
524 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700525 0,
526 0,
527 {},
528 },
529 {
530 // 0x35 DW_OP_lit5
531 "DW_OP_lit5",
532 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700533 0,
534 0,
535 {},
536 },
537 {
538 // 0x36 DW_OP_lit6
539 "DW_OP_lit6",
540 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700541 0,
542 0,
543 {},
544 },
545 {
546 // 0x37 DW_OP_lit7
547 "DW_OP_lit7",
548 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700549 0,
550 0,
551 {},
552 },
553 {
554 // 0x38 DW_OP_lit8
555 "DW_OP_lit8",
556 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700557 0,
558 0,
559 {},
560 },
561 {
562 // 0x39 DW_OP_lit9
563 "DW_OP_lit9",
564 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700565 0,
566 0,
567 {},
568 },
569 {
570 // 0x3a DW_OP_lit10
571 "DW_OP_lit10",
572 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700573 0,
574 0,
575 {},
576 },
577 {
578 // 0x3b DW_OP_lit11
579 "DW_OP_lit11",
580 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700581 0,
582 0,
583 {},
584 },
585 {
586 // 0x3c DW_OP_lit12
587 "DW_OP_lit12",
588 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700589 0,
590 0,
591 {},
592 },
593 {
594 // 0x3d DW_OP_lit13
595 "DW_OP_lit13",
596 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700597 0,
598 0,
599 {},
600 },
601 {
602 // 0x3e DW_OP_lit14
603 "DW_OP_lit14",
604 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700605 0,
606 0,
607 {},
608 },
609 {
610 // 0x3f DW_OP_lit15
611 "DW_OP_lit15",
612 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700613 0,
614 0,
615 {},
616 },
617 {
618 // 0x40 DW_OP_lit16
619 "DW_OP_lit16",
620 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700621 0,
622 0,
623 {},
624 },
625 {
626 // 0x41 DW_OP_lit17
627 "DW_OP_lit17",
628 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700629 0,
630 0,
631 {},
632 },
633 {
634 // 0x42 DW_OP_lit18
635 "DW_OP_lit18",
636 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700637 0,
638 0,
639 {},
640 },
641 {
642 // 0x43 DW_OP_lit19
643 "DW_OP_lit19",
644 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700645 0,
646 0,
647 {},
648 },
649 {
650 // 0x44 DW_OP_lit20
651 "DW_OP_lit20",
652 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700653 0,
654 0,
655 {},
656 },
657 {
658 // 0x45 DW_OP_lit21
659 "DW_OP_lit21",
660 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700661 0,
662 0,
663 {},
664 },
665 {
666 // 0x46 DW_OP_lit22
667 "DW_OP_lit22",
668 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700669 0,
670 0,
671 {},
672 },
673 {
674 // 0x47 DW_OP_lit23
675 "DW_OP_lit23",
676 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700677 0,
678 0,
679 {},
680 },
681 {
682 // 0x48 DW_OP_lit24
683 "DW_OP_lit24",
684 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700685 0,
686 0,
687 {},
688 },
689 {
690 // 0x49 DW_OP_lit25
691 "DW_OP_lit25",
692 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700693 0,
694 0,
695 {},
696 },
697 {
698 // 0x4a DW_OP_lit26
699 "DW_OP_lit26",
700 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700701 0,
702 0,
703 {},
704 },
705 {
706 // 0x4b DW_OP_lit27
707 "DW_OP_lit27",
708 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700709 0,
710 0,
711 {},
712 },
713 {
714 // 0x4c DW_OP_lit28
715 "DW_OP_lit28",
716 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700717 0,
718 0,
719 {},
720 },
721 {
722 // 0x4d DW_OP_lit29
723 "DW_OP_lit29",
724 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700725 0,
726 0,
727 {},
728 },
729 {
730 // 0x4e DW_OP_lit30
731 "DW_OP_lit30",
732 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700733 0,
734 0,
735 {},
736 },
737 {
738 // 0x4f DW_OP_lit31
739 "DW_OP_lit31",
740 &DwarfOp::op_lit,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700741 0,
742 0,
743 {},
744 },
745 {
746 // 0x50 DW_OP_reg0
747 "DW_OP_reg0",
748 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700749 0,
750 0,
751 {},
752 },
753 {
754 // 0x51 DW_OP_reg1
755 "DW_OP_reg1",
756 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700757 0,
758 0,
759 {},
760 },
761 {
762 // 0x52 DW_OP_reg2
763 "DW_OP_reg2",
764 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700765 0,
766 0,
767 {},
768 },
769 {
770 // 0x53 DW_OP_reg3
771 "DW_OP_reg3",
772 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700773 0,
774 0,
775 {},
776 },
777 {
778 // 0x54 DW_OP_reg4
779 "DW_OP_reg4",
780 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700781 0,
782 0,
783 {},
784 },
785 {
786 // 0x55 DW_OP_reg5
787 "DW_OP_reg5",
788 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700789 0,
790 0,
791 {},
792 },
793 {
794 // 0x56 DW_OP_reg6
795 "DW_OP_reg6",
796 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700797 0,
798 0,
799 {},
800 },
801 {
802 // 0x57 DW_OP_reg7
803 "DW_OP_reg7",
804 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700805 0,
806 0,
807 {},
808 },
809 {
810 // 0x58 DW_OP_reg8
811 "DW_OP_reg8",
812 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700813 0,
814 0,
815 {},
816 },
817 {
818 // 0x59 DW_OP_reg9
819 "DW_OP_reg9",
820 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700821 0,
822 0,
823 {},
824 },
825 {
826 // 0x5a DW_OP_reg10
827 "DW_OP_reg10",
828 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700829 0,
830 0,
831 {},
832 },
833 {
834 // 0x5b DW_OP_reg11
835 "DW_OP_reg11",
836 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700837 0,
838 0,
839 {},
840 },
841 {
842 // 0x5c DW_OP_reg12
843 "DW_OP_reg12",
844 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700845 0,
846 0,
847 {},
848 },
849 {
850 // 0x5d DW_OP_reg13
851 "DW_OP_reg13",
852 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700853 0,
854 0,
855 {},
856 },
857 {
858 // 0x5e DW_OP_reg14
859 "DW_OP_reg14",
860 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700861 0,
862 0,
863 {},
864 },
865 {
866 // 0x5f DW_OP_reg15
867 "DW_OP_reg15",
868 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700869 0,
870 0,
871 {},
872 },
873 {
874 // 0x60 DW_OP_reg16
875 "DW_OP_reg16",
876 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700877 0,
878 0,
879 {},
880 },
881 {
882 // 0x61 DW_OP_reg17
883 "DW_OP_reg17",
884 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700885 0,
886 0,
887 {},
888 },
889 {
890 // 0x62 DW_OP_reg18
891 "DW_OP_reg18",
892 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700893 0,
894 0,
895 {},
896 },
897 {
898 // 0x63 DW_OP_reg19
899 "DW_OP_reg19",
900 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700901 0,
902 0,
903 {},
904 },
905 {
906 // 0x64 DW_OP_reg20
907 "DW_OP_reg20",
908 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700909 0,
910 0,
911 {},
912 },
913 {
914 // 0x65 DW_OP_reg21
915 "DW_OP_reg21",
916 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700917 0,
918 0,
919 {},
920 },
921 {
922 // 0x66 DW_OP_reg22
923 "DW_OP_reg22",
924 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700925 0,
926 0,
927 {},
928 },
929 {
930 // 0x67 DW_OP_reg23
931 "DW_OP_reg23",
932 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700933 0,
934 0,
935 {},
936 },
937 {
938 // 0x68 DW_OP_reg24
939 "DW_OP_reg24",
940 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700941 0,
942 0,
943 {},
944 },
945 {
946 // 0x69 DW_OP_reg25
947 "DW_OP_reg25",
948 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700949 0,
950 0,
951 {},
952 },
953 {
954 // 0x6a DW_OP_reg26
955 "DW_OP_reg26",
956 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700957 0,
958 0,
959 {},
960 },
961 {
962 // 0x6b DW_OP_reg27
963 "DW_OP_reg27",
964 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700965 0,
966 0,
967 {},
968 },
969 {
970 // 0x6c DW_OP_reg28
971 "DW_OP_reg28",
972 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700973 0,
974 0,
975 {},
976 },
977 {
978 // 0x6d DW_OP_reg29
979 "DW_OP_reg29",
980 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700981 0,
982 0,
983 {},
984 },
985 {
986 // 0x6e DW_OP_reg30
987 "DW_OP_reg30",
988 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700989 0,
990 0,
991 {},
992 },
993 {
994 // 0x6f DW_OP_reg31
995 "DW_OP_reg31",
996 &DwarfOp::op_reg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -0700997 0,
998 0,
999 {},
1000 },
1001 {
1002 // 0x70 DW_OP_breg0
1003 "DW_OP_breg0",
1004 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001005 0,
1006 1,
1007 {DW_EH_PE_sleb128},
1008 },
1009 {
1010 // 0x71 DW_OP_breg1
1011 "DW_OP_breg1",
1012 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001013 0,
1014 1,
1015 {DW_EH_PE_sleb128},
1016 },
1017 {
1018 // 0x72 DW_OP_breg2
1019 "DW_OP_breg2",
1020 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001021 0,
1022 1,
1023 {DW_EH_PE_sleb128},
1024 },
1025 {
1026 // 0x73 DW_OP_breg3
1027 "DW_OP_breg3",
1028 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001029 0,
1030 1,
1031 {DW_EH_PE_sleb128},
1032 },
1033 {
1034 // 0x74 DW_OP_breg4
1035 "DW_OP_breg4",
1036 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001037 0,
1038 1,
1039 {DW_EH_PE_sleb128},
1040 },
1041 {
1042 // 0x75 DW_OP_breg5
1043 "DW_OP_breg5",
1044 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001045 0,
1046 1,
1047 {DW_EH_PE_sleb128},
1048 },
1049 {
1050 // 0x76 DW_OP_breg6
1051 "DW_OP_breg6",
1052 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001053 0,
1054 1,
1055 {DW_EH_PE_sleb128},
1056 },
1057 {
1058 // 0x77 DW_OP_breg7
1059 "DW_OP_breg7",
1060 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001061 0,
1062 1,
1063 {DW_EH_PE_sleb128},
1064 },
1065 {
1066 // 0x78 DW_OP_breg8
1067 "DW_OP_breg8",
1068 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001069 0,
1070 1,
1071 {DW_EH_PE_sleb128},
1072 },
1073 {
1074 // 0x79 DW_OP_breg9
1075 "DW_OP_breg9",
1076 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001077 0,
1078 1,
1079 {DW_EH_PE_sleb128},
1080 },
1081 {
1082 // 0x7a DW_OP_breg10
1083 "DW_OP_breg10",
1084 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001085 0,
1086 1,
1087 {DW_EH_PE_sleb128},
1088 },
1089 {
1090 // 0x7b DW_OP_breg11
1091 "DW_OP_breg11",
1092 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001093 0,
1094 1,
1095 {DW_EH_PE_sleb128},
1096 },
1097 {
1098 // 0x7c DW_OP_breg12
1099 "DW_OP_breg12",
1100 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001101 0,
1102 1,
1103 {DW_EH_PE_sleb128},
1104 },
1105 {
1106 // 0x7d DW_OP_breg13
1107 "DW_OP_breg13",
1108 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001109 0,
1110 1,
1111 {DW_EH_PE_sleb128},
1112 },
1113 {
1114 // 0x7e DW_OP_breg14
1115 "DW_OP_breg14",
1116 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001117 0,
1118 1,
1119 {DW_EH_PE_sleb128},
1120 },
1121 {
1122 // 0x7f DW_OP_breg15
1123 "DW_OP_breg15",
1124 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001125 0,
1126 1,
1127 {DW_EH_PE_sleb128},
1128 },
1129 {
1130 // 0x80 DW_OP_breg16
1131 "DW_OP_breg16",
1132 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001133 0,
1134 1,
1135 {DW_EH_PE_sleb128},
1136 },
1137 {
1138 // 0x81 DW_OP_breg17
1139 "DW_OP_breg17",
1140 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001141 0,
1142 1,
1143 {DW_EH_PE_sleb128},
1144 },
1145 {
1146 // 0x82 DW_OP_breg18
1147 "DW_OP_breg18",
1148 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001149 0,
1150 1,
1151 {DW_EH_PE_sleb128},
1152 },
1153 {
1154 // 0x83 DW_OP_breg19
1155 "DW_OP_breg19",
1156 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001157 0,
1158 1,
1159 {DW_EH_PE_sleb128},
1160 },
1161 {
1162 // 0x84 DW_OP_breg20
1163 "DW_OP_breg20",
1164 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001165 0,
1166 1,
1167 {DW_EH_PE_sleb128},
1168 },
1169 {
1170 // 0x85 DW_OP_breg21
1171 "DW_OP_breg21",
1172 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001173 0,
1174 1,
1175 {DW_EH_PE_sleb128},
1176 },
1177 {
1178 // 0x86 DW_OP_breg22
1179 "DW_OP_breg22",
1180 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001181 0,
1182 1,
1183 {DW_EH_PE_sleb128},
1184 },
1185 {
1186 // 0x87 DW_OP_breg23
1187 "DW_OP_breg23",
1188 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001189 0,
1190 1,
1191 {DW_EH_PE_sleb128},
1192 },
1193 {
1194 // 0x88 DW_OP_breg24
1195 "DW_OP_breg24",
1196 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001197 0,
1198 1,
1199 {DW_EH_PE_sleb128},
1200 },
1201 {
1202 // 0x89 DW_OP_breg25
1203 "DW_OP_breg25",
1204 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001205 0,
1206 1,
1207 {DW_EH_PE_sleb128},
1208 },
1209 {
1210 // 0x8a DW_OP_breg26
1211 "DW_OP_breg26",
1212 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001213 0,
1214 1,
1215 {DW_EH_PE_sleb128},
1216 },
1217 {
1218 // 0x8b DW_OP_breg27
1219 "DW_OP_breg27",
1220 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001221 0,
1222 1,
1223 {DW_EH_PE_sleb128},
1224 },
1225 {
1226 // 0x8c DW_OP_breg28
1227 "DW_OP_breg28",
1228 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001229 0,
1230 1,
1231 {DW_EH_PE_sleb128},
1232 },
1233 {
1234 // 0x8d DW_OP_breg29
1235 "DW_OP_breg29",
1236 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001237 0,
1238 1,
1239 {DW_EH_PE_sleb128},
1240 },
1241 {
1242 // 0x8e DW_OP_breg30
1243 "DW_OP_breg30",
1244 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001245 0,
1246 1,
1247 {DW_EH_PE_sleb128},
1248 },
1249 {
1250 // 0x8f DW_OP_breg31
1251 "DW_OP_breg31",
1252 &DwarfOp::op_breg,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001253 0,
1254 1,
1255 {DW_EH_PE_sleb128},
1256 },
1257 {
1258 // 0x90 DW_OP_regx
1259 "DW_OP_regx",
1260 &DwarfOp::op_regx,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001261 0,
1262 1,
1263 {DW_EH_PE_uleb128},
1264 },
1265 {
1266 // 0x91 DW_OP_fbreg
1267 "DW_OP_fbreg",
1268 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001269 0,
1270 1,
1271 {DW_EH_PE_sleb128},
1272 },
1273 {
1274 // 0x92 DW_OP_bregx
1275 "DW_OP_bregx",
1276 &DwarfOp::op_bregx,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001277 0,
1278 2,
1279 {DW_EH_PE_uleb128, DW_EH_PE_sleb128},
1280 },
1281 {
1282 // 0x93 DW_OP_piece
1283 "DW_OP_piece",
1284 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001285 0,
1286 1,
1287 {DW_EH_PE_uleb128},
1288 },
1289 {
1290 // 0x94 DW_OP_deref_size
1291 "DW_OP_deref_size",
1292 &DwarfOp::op_deref_size,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001293 1,
1294 1,
1295 {DW_EH_PE_udata1},
1296 },
1297 {
1298 // 0x95 DW_OP_xderef_size
1299 "DW_OP_xderef_size",
1300 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001301 0,
1302 1,
1303 {DW_EH_PE_udata1},
1304 },
1305 {
1306 // 0x96 DW_OP_nop
1307 "DW_OP_nop",
1308 &DwarfOp::op_nop,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001309 0,
1310 0,
1311 {},
1312 },
1313 {
1314 // 0x97 DW_OP_push_object_address
1315 "DW_OP_push_object_address",
1316 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001317 0,
1318 0,
1319 {},
1320 },
1321 {
1322 // 0x98 DW_OP_call2
1323 "DW_OP_call2",
1324 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001325 0,
1326 1,
1327 {DW_EH_PE_udata2},
1328 },
1329 {
1330 // 0x99 DW_OP_call4
1331 "DW_OP_call4",
1332 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001333 0,
1334 1,
1335 {DW_EH_PE_udata4},
1336 },
1337 {
1338 // 0x9a DW_OP_call_ref
1339 "DW_OP_call_ref",
1340 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001341 0,
1342 0, // Has a different sized operand (4 bytes or 8 bytes).
1343 {},
1344 },
1345 {
1346 // 0x9b DW_OP_form_tls_address
1347 "DW_OP_form_tls_address",
1348 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001349 0,
1350 0,
1351 {},
1352 },
1353 {
1354 // 0x9c DW_OP_call_frame_cfa
1355 "DW_OP_call_frame_cfa",
1356 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001357 0,
1358 0,
1359 {},
1360 },
1361 {
1362 // 0x9d DW_OP_bit_piece
1363 "DW_OP_bit_piece",
1364 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001365 0,
1366 2,
1367 {DW_EH_PE_uleb128, DW_EH_PE_uleb128},
1368 },
1369 {
1370 // 0x9e DW_OP_implicit_value
1371 "DW_OP_implicit_value",
1372 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001373 0,
1374 1,
1375 {DW_EH_PE_uleb128},
1376 },
1377 {
1378 // 0x9f DW_OP_stack_value
1379 "DW_OP_stack_value",
1380 &DwarfOp::op_not_implemented,
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001381 1,
1382 0,
1383 {},
1384 },
Christopher Ferris559c7f22018-02-12 20:18:03 -08001385 {nullptr, nullptr, 0, 0, {}}, // 0xa0 illegal op
1386 {nullptr, nullptr, 0, 0, {}}, // 0xa1 illegal op
1387 {nullptr, nullptr, 0, 0, {}}, // 0xa2 illegal op
1388 {nullptr, nullptr, 0, 0, {}}, // 0xa3 illegal op
1389 {nullptr, nullptr, 0, 0, {}}, // 0xa4 illegal op
1390 {nullptr, nullptr, 0, 0, {}}, // 0xa5 illegal op
1391 {nullptr, nullptr, 0, 0, {}}, // 0xa6 illegal op
1392 {nullptr, nullptr, 0, 0, {}}, // 0xa7 illegal op
1393 {nullptr, nullptr, 0, 0, {}}, // 0xa8 illegal op
1394 {nullptr, nullptr, 0, 0, {}}, // 0xa9 illegal op
1395 {nullptr, nullptr, 0, 0, {}}, // 0xaa illegal op
1396 {nullptr, nullptr, 0, 0, {}}, // 0xab illegal op
1397 {nullptr, nullptr, 0, 0, {}}, // 0xac illegal op
1398 {nullptr, nullptr, 0, 0, {}}, // 0xad illegal op
1399 {nullptr, nullptr, 0, 0, {}}, // 0xae illegal op
1400 {nullptr, nullptr, 0, 0, {}}, // 0xaf illegal op
1401 {nullptr, nullptr, 0, 0, {}}, // 0xb0 illegal op
1402 {nullptr, nullptr, 0, 0, {}}, // 0xb1 illegal op
1403 {nullptr, nullptr, 0, 0, {}}, // 0xb2 illegal op
1404 {nullptr, nullptr, 0, 0, {}}, // 0xb3 illegal op
1405 {nullptr, nullptr, 0, 0, {}}, // 0xb4 illegal op
1406 {nullptr, nullptr, 0, 0, {}}, // 0xb5 illegal op
1407 {nullptr, nullptr, 0, 0, {}}, // 0xb6 illegal op
1408 {nullptr, nullptr, 0, 0, {}}, // 0xb7 illegal op
1409 {nullptr, nullptr, 0, 0, {}}, // 0xb8 illegal op
1410 {nullptr, nullptr, 0, 0, {}}, // 0xb9 illegal op
1411 {nullptr, nullptr, 0, 0, {}}, // 0xba illegal op
1412 {nullptr, nullptr, 0, 0, {}}, // 0xbb illegal op
1413 {nullptr, nullptr, 0, 0, {}}, // 0xbc illegal op
1414 {nullptr, nullptr, 0, 0, {}}, // 0xbd illegal op
1415 {nullptr, nullptr, 0, 0, {}}, // 0xbe illegal op
1416 {nullptr, nullptr, 0, 0, {}}, // 0xbf illegal op
1417 {nullptr, nullptr, 0, 0, {}}, // 0xc0 illegal op
1418 {nullptr, nullptr, 0, 0, {}}, // 0xc1 illegal op
1419 {nullptr, nullptr, 0, 0, {}}, // 0xc2 illegal op
1420 {nullptr, nullptr, 0, 0, {}}, // 0xc3 illegal op
1421 {nullptr, nullptr, 0, 0, {}}, // 0xc4 illegal op
1422 {nullptr, nullptr, 0, 0, {}}, // 0xc5 illegal op
1423 {nullptr, nullptr, 0, 0, {}}, // 0xc6 illegal op
1424 {nullptr, nullptr, 0, 0, {}}, // 0xc7 illegal op
1425 {nullptr, nullptr, 0, 0, {}}, // 0xc8 illegal op
1426 {nullptr, nullptr, 0, 0, {}}, // 0xc9 illegal op
1427 {nullptr, nullptr, 0, 0, {}}, // 0xca illegal op
1428 {nullptr, nullptr, 0, 0, {}}, // 0xcb illegal op
1429 {nullptr, nullptr, 0, 0, {}}, // 0xcc illegal op
1430 {nullptr, nullptr, 0, 0, {}}, // 0xcd illegal op
1431 {nullptr, nullptr, 0, 0, {}}, // 0xce illegal op
1432 {nullptr, nullptr, 0, 0, {}}, // 0xcf illegal op
1433 {nullptr, nullptr, 0, 0, {}}, // 0xd0 illegal op
1434 {nullptr, nullptr, 0, 0, {}}, // 0xd1 illegal op
1435 {nullptr, nullptr, 0, 0, {}}, // 0xd2 illegal op
1436 {nullptr, nullptr, 0, 0, {}}, // 0xd3 illegal op
1437 {nullptr, nullptr, 0, 0, {}}, // 0xd4 illegal op
1438 {nullptr, nullptr, 0, 0, {}}, // 0xd5 illegal op
1439 {nullptr, nullptr, 0, 0, {}}, // 0xd6 illegal op
1440 {nullptr, nullptr, 0, 0, {}}, // 0xd7 illegal op
1441 {nullptr, nullptr, 0, 0, {}}, // 0xd8 illegal op
1442 {nullptr, nullptr, 0, 0, {}}, // 0xd9 illegal op
1443 {nullptr, nullptr, 0, 0, {}}, // 0xda illegal op
1444 {nullptr, nullptr, 0, 0, {}}, // 0xdb illegal op
1445 {nullptr, nullptr, 0, 0, {}}, // 0xdc illegal op
1446 {nullptr, nullptr, 0, 0, {}}, // 0xdd illegal op
1447 {nullptr, nullptr, 0, 0, {}}, // 0xde illegal op
1448 {nullptr, nullptr, 0, 0, {}}, // 0xdf illegal op
1449 {nullptr, nullptr, 0, 0, {}}, // 0xe0 DW_OP_lo_user
1450 {nullptr, nullptr, 0, 0, {}}, // 0xe1 illegal op
1451 {nullptr, nullptr, 0, 0, {}}, // 0xe2 illegal op
1452 {nullptr, nullptr, 0, 0, {}}, // 0xe3 illegal op
1453 {nullptr, nullptr, 0, 0, {}}, // 0xe4 illegal op
1454 {nullptr, nullptr, 0, 0, {}}, // 0xe5 illegal op
1455 {nullptr, nullptr, 0, 0, {}}, // 0xe6 illegal op
1456 {nullptr, nullptr, 0, 0, {}}, // 0xe7 illegal op
1457 {nullptr, nullptr, 0, 0, {}}, // 0xe8 illegal op
1458 {nullptr, nullptr, 0, 0, {}}, // 0xe9 illegal op
1459 {nullptr, nullptr, 0, 0, {}}, // 0xea illegal op
1460 {nullptr, nullptr, 0, 0, {}}, // 0xeb illegal op
1461 {nullptr, nullptr, 0, 0, {}}, // 0xec illegal op
1462 {nullptr, nullptr, 0, 0, {}}, // 0xed illegal op
1463 {nullptr, nullptr, 0, 0, {}}, // 0xee illegal op
1464 {nullptr, nullptr, 0, 0, {}}, // 0xef illegal op
1465 {nullptr, nullptr, 0, 0, {}}, // 0xf0 illegal op
1466 {nullptr, nullptr, 0, 0, {}}, // 0xf1 illegal op
1467 {nullptr, nullptr, 0, 0, {}}, // 0xf2 illegal op
1468 {nullptr, nullptr, 0, 0, {}}, // 0xf3 illegal op
1469 {nullptr, nullptr, 0, 0, {}}, // 0xf4 illegal op
1470 {nullptr, nullptr, 0, 0, {}}, // 0xf5 illegal op
1471 {nullptr, nullptr, 0, 0, {}}, // 0xf6 illegal op
1472 {nullptr, nullptr, 0, 0, {}}, // 0xf7 illegal op
1473 {nullptr, nullptr, 0, 0, {}}, // 0xf8 illegal op
1474 {nullptr, nullptr, 0, 0, {}}, // 0xf9 illegal op
1475 {nullptr, nullptr, 0, 0, {}}, // 0xfa illegal op
1476 {nullptr, nullptr, 0, 0, {}}, // 0xfb illegal op
1477 {nullptr, nullptr, 0, 0, {}}, // 0xfc illegal op
1478 {nullptr, nullptr, 0, 0, {}}, // 0xfd illegal op
1479 {nullptr, nullptr, 0, 0, {}}, // 0xfe illegal op
1480 {nullptr, nullptr, 0, 0, {}}, // 0xff DW_OP_hi_user
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001481 };
1482};
1483
Christopher Ferrisd226a512017-07-14 10:37:19 -07001484} // namespace unwindstack
1485
Christopher Ferris55d22ef2017-04-04 10:41:31 -07001486#endif // _LIBUNWINDSTACK_DWARF_OP_H