You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1641 lines
36 KiB
1641 lines
36 KiB
/* |
|
* Copyright (C) 2016 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
#ifndef _LIBUNWINDSTACK_DWARF_OP_H |
|
#define _LIBUNWINDSTACK_DWARF_OP_H |
|
|
|
#include <stdint.h> |
|
|
|
#include <deque> |
|
#include <string> |
|
#include <type_traits> |
|
#include <vector> |
|
|
|
#include "DwarfEncoding.h" |
|
#include "DwarfError.h" |
|
|
|
namespace unwindstack { |
|
|
|
enum DwarfVersion : uint8_t { |
|
DWARF_VERSION_2 = 2, |
|
DWARF_VERSION_3 = 3, |
|
DWARF_VERSION_4 = 4, |
|
DWARF_VERSION_MAX = DWARF_VERSION_4, |
|
}; |
|
|
|
// Forward declarations. |
|
class DwarfMemory; |
|
class Memory; |
|
template <typename AddressType> |
|
class RegsImpl; |
|
|
|
template <typename AddressType> |
|
class DwarfOp { |
|
// Signed version of AddressType |
|
typedef typename std::make_signed<AddressType>::type SignedType; |
|
|
|
struct OpCallback { |
|
const char* name; |
|
bool (DwarfOp::*handle_func)(); |
|
uint8_t supported_version; |
|
uint8_t num_required_stack_values; |
|
uint8_t num_operands; |
|
uint8_t operands[2]; |
|
}; |
|
|
|
public: |
|
DwarfOp(DwarfMemory* memory, Memory* regular_memory) |
|
: memory_(memory), regular_memory_(regular_memory) {} |
|
virtual ~DwarfOp() = default; |
|
|
|
bool Decode(uint8_t dwarf_version); |
|
|
|
bool Eval(uint64_t start, uint64_t end, uint8_t dwarf_version); |
|
|
|
void GetLogInfo(uint64_t start, uint64_t end, std::vector<std::string>* lines); |
|
|
|
AddressType StackAt(size_t index) { return stack_[index]; } |
|
size_t StackSize() { return stack_.size(); } |
|
|
|
void set_regs(RegsImpl<AddressType>* regs) { regs_ = regs; } |
|
|
|
DwarfError last_error() { return last_error_; } |
|
|
|
bool is_register() { return is_register_; } |
|
|
|
uint8_t cur_op() { return cur_op_; } |
|
|
|
Memory* regular_memory() { return regular_memory_; } |
|
|
|
protected: |
|
AddressType OperandAt(size_t index) { return operands_[index]; } |
|
size_t OperandsSize() { return operands_.size(); } |
|
|
|
AddressType StackPop() { |
|
AddressType value = stack_.front(); |
|
stack_.pop_front(); |
|
return value; |
|
} |
|
|
|
private: |
|
DwarfMemory* memory_; |
|
Memory* regular_memory_; |
|
|
|
RegsImpl<AddressType>* regs_; |
|
bool is_register_ = false; |
|
DwarfError last_error_ = DWARF_ERROR_NONE; |
|
uint8_t cur_op_; |
|
std::vector<AddressType> operands_; |
|
std::deque<AddressType> stack_; |
|
|
|
inline AddressType bool_to_dwarf_bool(bool value) { return value ? 1 : 0; } |
|
|
|
// Op processing functions. |
|
bool op_deref(); |
|
bool op_deref_size(); |
|
bool op_push(); |
|
bool op_dup(); |
|
bool op_drop(); |
|
bool op_over(); |
|
bool op_pick(); |
|
bool op_swap(); |
|
bool op_rot(); |
|
bool op_abs(); |
|
bool op_and(); |
|
bool op_div(); |
|
bool op_minus(); |
|
bool op_mod(); |
|
bool op_mul(); |
|
bool op_neg(); |
|
bool op_not(); |
|
bool op_or(); |
|
bool op_plus(); |
|
bool op_plus_uconst(); |
|
bool op_shl(); |
|
bool op_shr(); |
|
bool op_shra(); |
|
bool op_xor(); |
|
bool op_bra(); |
|
bool op_eq(); |
|
bool op_ge(); |
|
bool op_gt(); |
|
bool op_le(); |
|
bool op_lt(); |
|
bool op_ne(); |
|
bool op_skip(); |
|
bool op_lit(); |
|
bool op_reg(); |
|
bool op_regx(); |
|
bool op_breg(); |
|
bool op_bregx(); |
|
bool op_nop(); |
|
bool op_not_implemented(); |
|
|
|
constexpr static OpCallback kCallbackTable[256] = { |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x00 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x01 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x02 illegal op |
|
{ |
|
// 0x03 DW_OP_addr |
|
"DW_OP_addr", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_absptr}, |
|
}, |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x04 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x05 illegal op |
|
{ |
|
// 0x06 DW_OP_deref |
|
"DW_OP_deref", |
|
&DwarfOp::op_deref, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0x07 illegal op |
|
{ |
|
// 0x08 DW_OP_const1u |
|
"DW_OP_const1u", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata1}, |
|
}, |
|
{ |
|
// 0x09 DW_OP_const1s |
|
"DW_OP_const1s", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sdata1}, |
|
}, |
|
{ |
|
// 0x0a DW_OP_const2u |
|
"DW_OP_const2u", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata2}, |
|
}, |
|
{ |
|
// 0x0b DW_OP_const2s |
|
"DW_OP_const2s", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sdata2}, |
|
}, |
|
{ |
|
// 0x0c DW_OP_const4u |
|
"DW_OP_const4u", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata4}, |
|
}, |
|
{ |
|
// 0x0d DW_OP_const4s |
|
"DW_OP_const4s", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sdata4}, |
|
}, |
|
{ |
|
// 0x0e DW_OP_const8u |
|
"DW_OP_const8u", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata8}, |
|
}, |
|
{ |
|
// 0x0f DW_OP_const8s |
|
"DW_OP_const8s", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sdata8}, |
|
}, |
|
{ |
|
// 0x10 DW_OP_constu |
|
"DW_OP_constu", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x11 DW_OP_consts |
|
"DW_OP_consts", |
|
&DwarfOp::op_push, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x12 DW_OP_dup |
|
"DW_OP_dup", |
|
&DwarfOp::op_dup, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x13 DW_OP_drop |
|
"DW_OP_drop", |
|
&DwarfOp::op_drop, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x14 DW_OP_over |
|
"DW_OP_over", |
|
&DwarfOp::op_over, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x15 DW_OP_pick |
|
"DW_OP_pick", |
|
&DwarfOp::op_pick, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata1}, |
|
}, |
|
{ |
|
// 0x16 DW_OP_swap |
|
"DW_OP_swap", |
|
&DwarfOp::op_swap, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x17 DW_OP_rot |
|
"DW_OP_rot", |
|
&DwarfOp::op_rot, |
|
DWARF_VERSION_2, |
|
3, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x18 DW_OP_xderef |
|
"DW_OP_xderef", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x19 DW_OP_abs |
|
"DW_OP_abs", |
|
&DwarfOp::op_abs, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1a DW_OP_and |
|
"DW_OP_and", |
|
&DwarfOp::op_and, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1b DW_OP_div |
|
"DW_OP_div", |
|
&DwarfOp::op_div, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1c DW_OP_minus |
|
"DW_OP_minus", |
|
&DwarfOp::op_minus, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1d DW_OP_mod |
|
"DW_OP_mod", |
|
&DwarfOp::op_mod, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1e DW_OP_mul |
|
"DW_OP_mul", |
|
&DwarfOp::op_mul, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x1f DW_OP_neg |
|
"DW_OP_neg", |
|
&DwarfOp::op_neg, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x20 DW_OP_not |
|
"DW_OP_not", |
|
&DwarfOp::op_not, |
|
DWARF_VERSION_2, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x21 DW_OP_or |
|
"DW_OP_or", |
|
&DwarfOp::op_or, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x22 DW_OP_plus |
|
"DW_OP_plus", |
|
&DwarfOp::op_plus, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x23 DW_OP_plus_uconst |
|
"DW_OP_plus_uconst", |
|
&DwarfOp::op_plus_uconst, |
|
DWARF_VERSION_2, |
|
1, |
|
1, |
|
{DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x24 DW_OP_shl |
|
"DW_OP_shl", |
|
&DwarfOp::op_shl, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x25 DW_OP_shr |
|
"DW_OP_shr", |
|
&DwarfOp::op_shr, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x26 DW_OP_shra |
|
"DW_OP_shra", |
|
&DwarfOp::op_shra, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x27 DW_OP_xor |
|
"DW_OP_xor", |
|
&DwarfOp::op_xor, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x28 DW_OP_bra |
|
"DW_OP_bra", |
|
&DwarfOp::op_bra, |
|
DWARF_VERSION_2, |
|
1, |
|
1, |
|
{DW_EH_PE_sdata2}, |
|
}, |
|
{ |
|
// 0x29 DW_OP_eq |
|
"DW_OP_eq", |
|
&DwarfOp::op_eq, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2a DW_OP_ge |
|
"DW_OP_ge", |
|
&DwarfOp::op_ge, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2b DW_OP_gt |
|
"DW_OP_gt", |
|
&DwarfOp::op_gt, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2c DW_OP_le |
|
"DW_OP_le", |
|
&DwarfOp::op_le, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2d DW_OP_lt |
|
"DW_OP_lt", |
|
&DwarfOp::op_lt, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2e DW_OP_ne |
|
"DW_OP_ne", |
|
&DwarfOp::op_ne, |
|
DWARF_VERSION_2, |
|
2, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x2f DW_OP_skip |
|
"DW_OP_skip", |
|
&DwarfOp::op_skip, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sdata2}, |
|
}, |
|
{ |
|
// 0x30 DW_OP_lit0 |
|
"DW_OP_lit0", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x31 DW_OP_lit1 |
|
"DW_OP_lit1", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x32 DW_OP_lit2 |
|
"DW_OP_lit2", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x33 DW_OP_lit3 |
|
"DW_OP_lit3", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x34 DW_OP_lit4 |
|
"DW_OP_lit4", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x35 DW_OP_lit5 |
|
"DW_OP_lit5", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x36 DW_OP_lit6 |
|
"DW_OP_lit6", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x37 DW_OP_lit7 |
|
"DW_OP_lit7", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x38 DW_OP_lit8 |
|
"DW_OP_lit8", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x39 DW_OP_lit9 |
|
"DW_OP_lit9", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3a DW_OP_lit10 |
|
"DW_OP_lit10", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3b DW_OP_lit11 |
|
"DW_OP_lit11", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3c DW_OP_lit12 |
|
"DW_OP_lit12", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3d DW_OP_lit13 |
|
"DW_OP_lit13", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3e DW_OP_lit14 |
|
"DW_OP_lit14", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x3f DW_OP_lit15 |
|
"DW_OP_lit15", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x40 DW_OP_lit16 |
|
"DW_OP_lit16", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x41 DW_OP_lit17 |
|
"DW_OP_lit17", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x42 DW_OP_lit18 |
|
"DW_OP_lit18", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x43 DW_OP_lit19 |
|
"DW_OP_lit19", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x44 DW_OP_lit20 |
|
"DW_OP_lit20", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x45 DW_OP_lit21 |
|
"DW_OP_lit21", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x46 DW_OP_lit22 |
|
"DW_OP_lit22", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x47 DW_OP_lit23 |
|
"DW_OP_lit23", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x48 DW_OP_lit24 |
|
"DW_OP_lit24", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x49 DW_OP_lit25 |
|
"DW_OP_lit25", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4a DW_OP_lit26 |
|
"DW_OP_lit26", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4b DW_OP_lit27 |
|
"DW_OP_lit27", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4c DW_OP_lit28 |
|
"DW_OP_lit28", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4d DW_OP_lit29 |
|
"DW_OP_lit29", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4e DW_OP_lit30 |
|
"DW_OP_lit30", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x4f DW_OP_lit31 |
|
"DW_OP_lit31", |
|
&DwarfOp::op_lit, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x50 DW_OP_reg0 |
|
"DW_OP_reg0", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x51 DW_OP_reg1 |
|
"DW_OP_reg1", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x52 DW_OP_reg2 |
|
"DW_OP_reg2", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x53 DW_OP_reg3 |
|
"DW_OP_reg3", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x54 DW_OP_reg4 |
|
"DW_OP_reg4", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x55 DW_OP_reg5 |
|
"DW_OP_reg5", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x56 DW_OP_reg6 |
|
"DW_OP_reg6", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x57 DW_OP_reg7 |
|
"DW_OP_reg7", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x58 DW_OP_reg8 |
|
"DW_OP_reg8", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x59 DW_OP_reg9 |
|
"DW_OP_reg9", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5a DW_OP_reg10 |
|
"DW_OP_reg10", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5b DW_OP_reg11 |
|
"DW_OP_reg11", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5c DW_OP_reg12 |
|
"DW_OP_reg12", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5d DW_OP_reg13 |
|
"DW_OP_reg13", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5e DW_OP_reg14 |
|
"DW_OP_reg14", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x5f DW_OP_reg15 |
|
"DW_OP_reg15", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x60 DW_OP_reg16 |
|
"DW_OP_reg16", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x61 DW_OP_reg17 |
|
"DW_OP_reg17", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x62 DW_OP_reg18 |
|
"DW_OP_reg18", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x63 DW_OP_reg19 |
|
"DW_OP_reg19", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x64 DW_OP_reg20 |
|
"DW_OP_reg20", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x65 DW_OP_reg21 |
|
"DW_OP_reg21", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x66 DW_OP_reg22 |
|
"DW_OP_reg22", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x67 DW_OP_reg23 |
|
"DW_OP_reg23", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x68 DW_OP_reg24 |
|
"DW_OP_reg24", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x69 DW_OP_reg25 |
|
"DW_OP_reg25", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6a DW_OP_reg26 |
|
"DW_OP_reg26", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6b DW_OP_reg27 |
|
"DW_OP_reg27", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6c DW_OP_reg28 |
|
"DW_OP_reg28", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6d DW_OP_reg29 |
|
"DW_OP_reg29", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6e DW_OP_reg30 |
|
"DW_OP_reg30", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x6f DW_OP_reg31 |
|
"DW_OP_reg31", |
|
&DwarfOp::op_reg, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x70 DW_OP_breg0 |
|
"DW_OP_breg0", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x71 DW_OP_breg1 |
|
"DW_OP_breg1", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x72 DW_OP_breg2 |
|
"DW_OP_breg2", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x73 DW_OP_breg3 |
|
"DW_OP_breg3", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x74 DW_OP_breg4 |
|
"DW_OP_breg4", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x75 DW_OP_breg5 |
|
"DW_OP_breg5", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x76 DW_OP_breg6 |
|
"DW_OP_breg6", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x77 DW_OP_breg7 |
|
"DW_OP_breg7", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x78 DW_OP_breg8 |
|
"DW_OP_breg8", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x79 DW_OP_breg9 |
|
"DW_OP_breg9", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7a DW_OP_breg10 |
|
"DW_OP_breg10", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7b DW_OP_breg11 |
|
"DW_OP_breg11", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7c DW_OP_breg12 |
|
"DW_OP_breg12", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7d DW_OP_breg13 |
|
"DW_OP_breg13", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7e DW_OP_breg14 |
|
"DW_OP_breg14", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x7f DW_OP_breg15 |
|
"DW_OP_breg15", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x80 DW_OP_breg16 |
|
"DW_OP_breg16", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x81 DW_OP_breg17 |
|
"DW_OP_breg17", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x82 DW_OP_breg18 |
|
"DW_OP_breg18", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x83 DW_OP_breg19 |
|
"DW_OP_breg19", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x84 DW_OP_breg20 |
|
"DW_OP_breg20", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x85 DW_OP_breg21 |
|
"DW_OP_breg21", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x86 DW_OP_breg22 |
|
"DW_OP_breg22", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x87 DW_OP_breg23 |
|
"DW_OP_breg23", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x88 DW_OP_breg24 |
|
"DW_OP_breg24", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x89 DW_OP_breg25 |
|
"DW_OP_breg25", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8a DW_OP_breg26 |
|
"DW_OP_breg26", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8b DW_OP_breg27 |
|
"DW_OP_breg27", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8c DW_OP_breg28 |
|
"DW_OP_breg28", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8d DW_OP_breg29 |
|
"DW_OP_breg29", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8e DW_OP_breg30 |
|
"DW_OP_breg30", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x8f DW_OP_breg31 |
|
"DW_OP_breg31", |
|
&DwarfOp::op_breg, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x90 DW_OP_regx |
|
"DW_OP_regx", |
|
&DwarfOp::op_regx, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x91 DW_OP_fbreg |
|
"DW_OP_fbreg", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x92 DW_OP_bregx |
|
"DW_OP_bregx", |
|
&DwarfOp::op_bregx, |
|
DWARF_VERSION_2, |
|
0, |
|
2, |
|
{DW_EH_PE_uleb128, DW_EH_PE_sleb128}, |
|
}, |
|
{ |
|
// 0x93 DW_OP_piece |
|
"DW_OP_piece", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x94 DW_OP_deref_size |
|
"DW_OP_deref_size", |
|
&DwarfOp::op_deref_size, |
|
DWARF_VERSION_2, |
|
1, |
|
1, |
|
{DW_EH_PE_udata1}, |
|
}, |
|
{ |
|
// 0x95 DW_OP_xderef_size |
|
"DW_OP_xderef_size", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_2, |
|
0, |
|
1, |
|
{DW_EH_PE_udata1}, |
|
}, |
|
{ |
|
// 0x96 DW_OP_nop |
|
"DW_OP_nop", |
|
&DwarfOp::op_nop, |
|
DWARF_VERSION_2, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x97 DW_OP_push_object_address |
|
"DW_OP_push_object_address", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x98 DW_OP_call2 |
|
"DW_OP_call2", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
1, |
|
{DW_EH_PE_udata2}, |
|
}, |
|
{ |
|
// 0x99 DW_OP_call4 |
|
"DW_OP_call4", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
1, |
|
{DW_EH_PE_udata4}, |
|
}, |
|
{ |
|
// 0x9a DW_OP_call_ref |
|
"DW_OP_call_ref", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
0, // Has a different sized operand (4 bytes or 8 bytes). |
|
{}, |
|
}, |
|
{ |
|
// 0x9b DW_OP_form_tls_address |
|
"DW_OP_form_tls_address", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x9c DW_OP_call_frame_cfa |
|
"DW_OP_call_frame_cfa", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
0, |
|
{}, |
|
}, |
|
{ |
|
// 0x9d DW_OP_bit_piece |
|
"DW_OP_bit_piece", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_3, |
|
0, |
|
2, |
|
{DW_EH_PE_uleb128, DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x9e DW_OP_implicit_value |
|
"DW_OP_implicit_value", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_4, |
|
0, |
|
1, |
|
{DW_EH_PE_uleb128}, |
|
}, |
|
{ |
|
// 0x9f DW_OP_stack_value |
|
"DW_OP_stack_value", |
|
&DwarfOp::op_not_implemented, |
|
DWARF_VERSION_4, |
|
1, |
|
0, |
|
{}, |
|
}, |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa0 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xa9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xaa illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xab illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xac illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xad illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xae illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xaf illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb0 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xb9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xba illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xbb illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xbc illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xbd illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xbe illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xbf illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc0 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xc9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xca illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xcb illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xcc illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xcd illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xce illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xcf illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd0 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xd9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xda illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xdb illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xdc illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xdd illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xde illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xdf illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe0 DW_OP_lo_user |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xe9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xea illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xeb illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xec illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xed illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xee illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xef illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf0 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf1 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf2 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf3 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf4 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf5 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf6 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf7 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf8 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xf9 illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xfa illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xfb illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xfc illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xfd illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xfe illegal op |
|
{nullptr, nullptr, 0, 0, 0, {}}, // 0xff DW_OP_hi_user |
|
}; |
|
}; |
|
|
|
} // namespace unwindstack |
|
|
|
#endif // _LIBUNWINDSTACK_DWARF_OP_H
|
|
|