[PATCH] dbghelp: add 2 new darf defines and implement DW_OP_stack_value
Marcus Meissner
marcus at jet.franken.de
Mon May 31 15:08:28 CDT 2010
DW_OP_stack_value just returns the top of stack,
quite simple.
Ciao, Marcus
---
dlls/dbghelp/dwarf.c | 7 +++++++
dlls/dbghelp/dwarf.h | 3 +++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 35c01a6..096c9a4 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -847,6 +847,13 @@ compute_location(dwarf2_traverse_context_t* ctx, struct location* loc,
loc->kind = loc_dwarf2_block;
}
break;
+ case DW_OP_stack_value:
+ /* Expected behaviiour is that this is the last instruction of this
+ * expression and just the "top of stack" value should be put to loc->offset. */
+ if (ctx->data == ctx->end_data)
+ break;
+ FIXME("DW_OP_stack_value: ctx->data - ctx->end_data = %d\n", ctx->data - ctx->end_data);
+ break;
default:
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);
diff --git a/dlls/dbghelp/dwarf.h b/dlls/dbghelp/dwarf.h
index 23493d6..4ecb816 100644
--- a/dlls/dbghelp/dwarf.h
+++ b/dlls/dbghelp/dwarf.h
@@ -379,6 +379,9 @@ typedef enum dwarf_operation_e
DW_OP_form_tls_address = 0x9b,
DW_OP_call_frame_cfa = 0x9c,
DW_OP_bit_piece = 0x9d,
+ /** Dwarf4 new values */
+ DW_OP_implicit_value = 0x9e,
+ DW_OP_stack_value = 0x9f,
/* Implementation defined extensions */
DW_OP_lo_user = 0xe0,
--
1.5.6
More information about the wine-patches
mailing list