diff options
author | Tim Moore <timoore@redhat.com> | 2009-10-07 20:10:17 +0200 |
---|---|---|
committer | Tim Moore <timoore@redhat.com> | 2009-10-07 20:10:17 +0200 |
commit | e6638df404688a1af5e9713befc298984241af5b (patch) | |
tree | a3684cfc7825e9079a021a38732e5d4ce4260c1c /dwflpp.cxx | |
parent | 9ed28fbc61420dbcfe46828fe5ee35eae3f4dc79 (diff) | |
parent | 038c38c6119e29189be83c3a214c635c0d02ee58 (diff) | |
download | systemtap-steved-e6638df404688a1af5e9713befc298984241af5b.tar.gz systemtap-steved-e6638df404688a1af5e9713befc298984241af5b.tar.xz systemtap-steved-e6638df404688a1af5e9713befc298984241af5b.zip |
Merge commit 'origin/master'
Diffstat (limited to 'dwflpp.cxx')
-rw-r--r-- | dwflpp.cxx | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -1654,6 +1654,14 @@ dwflpp::translate_location(struct obstack *pool, } #endif + /* There is no location expression, but a constant value instead. */ + if (dwarf_whatattr (attr) == DW_AT_const_value) + { + *tail = c_translate_constant (pool, &loc2c_error, this, + &loc2c_emit_address, 0, pc, attr); + return *tail; + } + Dwarf_Op *expr; size_t len; @@ -2216,7 +2224,8 @@ dwflpp::literal_stmt_for_local (vector<Dwarf_Die>& scopes, << "\n"; Dwarf_Attribute attr_mem; - if (dwarf_attr_integrate (&vardie, DW_AT_location, &attr_mem) == NULL) + if (dwarf_attr_integrate (&vardie, DW_AT_const_value, &attr_mem) == NULL + && dwarf_attr_integrate (&vardie, DW_AT_location, &attr_mem) == NULL) { throw semantic_error("failed to retrieve location " "attribute for local '" + local |