Module: wine
Branch: master
Commit: fa7332fd270ff558ca3d2869bd312e77c41d455e
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=fa7332fd270ff558ca3d286…
Author: Eric Pouech <eric.pouech(a)wanadoo.fr>
Date: Mon Sep 25 22:40:50 2006 +0200
dbghelp: Added support for DW_OP_breg* operations in location computation.
---
dlls/dbghelp/dwarf.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 114f781..2e0ef76 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -547,6 +547,14 @@ static unsigned long dwarf2_compute_loca
case DW_OP_reg20: case DW_OP_reg21: case DW_OP_reg22: case DW_OP_reg23:
case DW_OP_reg24: case DW_OP_reg25: case DW_OP_reg26: case DW_OP_reg27:
case DW_OP_reg28: case DW_OP_reg29: case DW_OP_reg30: case DW_OP_reg31:
+ case DW_OP_breg0: case DW_OP_breg1: case DW_OP_breg2: case DW_OP_breg3:
+ case DW_OP_breg4: case DW_OP_breg5: case DW_OP_breg6: case DW_OP_breg7:
+ case DW_OP_breg8: case DW_OP_breg9: case DW_OP_breg10: case DW_OP_breg11:
+ case DW_OP_breg12: case DW_OP_breg13: case DW_OP_breg14: case DW_OP_breg15:
+ case DW_OP_breg16: case DW_OP_breg17: case DW_OP_breg18: case DW_OP_breg19:
+ case DW_OP_breg20: case DW_OP_breg21: case DW_OP_breg22: case DW_OP_breg23:
+ case DW_OP_breg24: case DW_OP_breg25: case DW_OP_breg26: case DW_OP_breg27:
+ case DW_OP_breg28: case DW_OP_breg29: case DW_OP_breg30: case DW_OP_breg31:
if (in_register)
{
/* dbghelp APIs don't know how to cope with this anyway
@@ -562,6 +570,11 @@ static unsigned long dwarf2_compute_loca
}
}
else FIXME("Found register, while not expecting it\n");
+ if (op >= DW_OP_breg0 && op <= DW_OP_breg31)
+ {
+ loc[++stk] = dwarf2_leb128_as_signed(&lctx);
+ if (in_register) *in_register |= Wine_DW_register_deref;
+ }
break;
case DW_OP_fbreg:
if (in_register)
Module: wine
Branch: master
Commit: 6c4c64265d390c03544ba256024b8582a9bacae4
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6c4c64265d390c03544ba25…
Author: Eric Pouech <eric.pouech(a)wanadoo.fr>
Date: Mon Sep 25 22:40:41 2006 +0200
dbghelp: Variables & registers.
- more strickling differentiation variable location between
a register, and the dereferenced address defined by a
register (and possibly an offset)
- added a parameter to symt_add_func_local (and internal symbol
data struct) to help differentiate
- fix all debug parsers to confer to this new scheme
---
dlls/dbghelp/dbghelp_private.h | 5 +++--
dlls/dbghelp/dwarf.c | 16 +++++++++-------
dlls/dbghelp/msc.c | 14 +++++++-------
dlls/dbghelp/stabs.c | 20 +++++++++++---------
dlls/dbghelp/symbol.c | 9 +++++----
5 files changed, 35 insertions(+), 29 deletions(-)
Diff: http://source.winehq.org/git/?p=wine.git;a=commitdiff;h=6c4c64265d390c03544…