dbghelp: Add 2 new darf defines and implement DW_OP_stack_value.
This commit is contained in:
parent
7342bce80d
commit
4f2e15d053
|
@ -847,6 +847,10 @@ compute_location(dwarf2_traverse_context_t* ctx, struct location* loc,
|
||||||
loc->kind = loc_dwarf2_block;
|
loc->kind = loc_dwarf2_block;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DW_OP_stack_value:
|
||||||
|
/* Expected behaviour is that this is the last instruction of this
|
||||||
|
* expression and just the "top of stack" value should be put to loc->offset. */
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (op < DW_OP_lo_user) /* as DW_OP_hi_user is 0xFF, we don't need to test against it */
|
if (op < DW_OP_lo_user) /* as DW_OP_hi_user is 0xFF, we don't need to test against it */
|
||||||
FIXME("Unhandled attr op: %x\n", op);
|
FIXME("Unhandled attr op: %x\n", op);
|
||||||
|
|
|
@ -379,6 +379,9 @@ typedef enum dwarf_operation_e
|
||||||
DW_OP_form_tls_address = 0x9b,
|
DW_OP_form_tls_address = 0x9b,
|
||||||
DW_OP_call_frame_cfa = 0x9c,
|
DW_OP_call_frame_cfa = 0x9c,
|
||||||
DW_OP_bit_piece = 0x9d,
|
DW_OP_bit_piece = 0x9d,
|
||||||
|
/** Dwarf4 new values */
|
||||||
|
DW_OP_implicit_value = 0x9e,
|
||||||
|
DW_OP_stack_value = 0x9f,
|
||||||
|
|
||||||
/* Implementation defined extensions */
|
/* Implementation defined extensions */
|
||||||
DW_OP_lo_user = 0xe0,
|
DW_OP_lo_user = 0xe0,
|
||||||
|
|
|
@ -724,6 +724,10 @@ static void symt_fill_sym_info(struct module_pair* pair,
|
||||||
sym_info->Register = loc.reg ? loc.reg : CV_REG_EBP;
|
sym_info->Register = loc.reg ? loc.reg : CV_REG_EBP;
|
||||||
sym_info->Address = loc.offset;
|
sym_info->Address = loc.offset;
|
||||||
break;
|
break;
|
||||||
|
case loc_absolute:
|
||||||
|
sym_info->Flags |= SYMFLAG_VALUEPRESENT;
|
||||||
|
sym_info->Value = loc.offset;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
FIXME("Shouldn't happen (kind=%d), debug reader backend is broken\n", loc.kind);
|
FIXME("Shouldn't happen (kind=%d), debug reader backend is broken\n", loc.kind);
|
||||||
assert(0);
|
assert(0);
|
||||||
|
|
Loading…
Reference in New Issue