Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/agent
diff options
context:
space:
mode:
authorEugene Tarassov2011-12-23 23:24:12 +0000
committerEugene Tarassov2011-12-23 23:24:12 +0000
commit866417fda66e11b1686d3e95581f544dea1af9ac (patch)
tree3c95020c8332373c7840ee62bf218bf675e23476 /agent
parentd05ce39c66fe87e5470ecbf7137721426ea21217 (diff)
downloadorg.eclipse.tcf.agent-866417fda66e11b1686d3e95581f544dea1af9ac.tar.gz
org.eclipse.tcf.agent-866417fda66e11b1686d3e95581f544dea1af9ac.tar.xz
org.eclipse.tcf.agent-866417fda66e11b1686d3e95581f544dea1af9ac.zip
TCF Agent: fixed handling of DW_FORM_exprloc in DWARF 4.
Diffstat (limited to 'agent')
-rw-r--r--agent/tcf/services/dwarfcache.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/agent/tcf/services/dwarfcache.c b/agent/tcf/services/dwarfcache.c
index d80bb55a..15cd804e 100644
--- a/agent/tcf/services/dwarfcache.c
+++ b/agent/tcf/services/dwarfcache.c
@@ -1098,6 +1098,9 @@ static void read_dwarf_object_property(Context * Ctx, int Frame, ObjectInfo * Ob
case FORM_BLOCK4 :
case FORM_BLOCK :
case FORM_STRP :
+ case FORM_SEC_OFFSET:
+ case FORM_EXPRLOC :
+ case FORM_REF_SIG8 :
Value->mAddr = (U1_T *)gop_gFormDataAddr;
Value->mSize = gop_gFormDataSize;
break;
@@ -1176,7 +1179,10 @@ void read_and_evaluate_dwarf_object_property(Context * Ctx, int Frame, U8_T Base
assert(Value->mFrame == Frame);
assert(Value->mObject == Obj);
assert(Value->mAttr == Attr);
- if (Attr == AT_location || Attr == AT_data_member_location || Attr == AT_string_length || Attr == AT_frame_base) {
+ if (Value->mForm == FORM_EXPRLOC) {
+ dwarf_evaluate_expression(Base, Value);
+ }
+ else if (Attr == AT_location || Attr == AT_data_member_location || Attr == AT_string_length || Attr == AT_frame_base) {
switch (Value->mForm) {
case FORM_DATA4 :
case FORM_DATA8 :

Back to the top