diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-01-25 16:24:44 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-01-25 16:24:44 +0000 |
commit | 5ac95241162bf4729ecaf3c880cdaa846a3aded4 (patch) | |
tree | 9b80e933c42503c214029adde4ca6b23fceb90ed /gdb | |
parent | a1aa5e81de977805b16f2b1b9a12027a7f61c20c (diff) | |
download | gdb-5ac95241162bf4729ecaf3c880cdaa846a3aded4.zip gdb-5ac95241162bf4729ecaf3c880cdaa846a3aded4.tar.gz gdb-5ac95241162bf4729ecaf3c880cdaa846a3aded4.tar.bz2 |
Handle DW_OP_GNU_implicit_pointer in dwarf assembler
DW_OP_GNU_implicit_pointer refers to a DIE with an offset of different
sizes in different dwarf versions. In v2, the size is the pointer size,
while in v3 and above, it is the ref_addr size. This patch fixes
dwarf assembler to emit the correct size of offset. We've already fixed
this size issue in gdb,
https://sourceware.org/ml/gdb-patches/2011-09/msg00451.html
gdb/testsuite:
2017-01-25 Yao Qi <yao.qi@linaro.org>
* lib/dwarf.exp (Dwarf::_location): Handle
DW_OP_GNU_implicit_pointer with proper size.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/dwarf.exp | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4d19711..aa272e3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-25 Yao Qi <yao.qi@linaro.org> + + * lib/dwarf.exp (Dwarf::_location): Handle + DW_OP_GNU_implicit_pointer with proper size. + 2017-01-20 Luis Machado <lgustavo@codesourcery.com> * gdb.python/py-xmethods.exp: Fix test names starting with lowercase diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp index 9f5fa6c..03ae637 100644 --- a/gdb/testsuite/lib/dwarf.exp +++ b/gdb/testsuite/lib/dwarf.exp @@ -840,6 +840,7 @@ namespace eval Dwarf { proc _location {body} { variable _constants variable _cu_label + variable _cu_version variable _cu_addr_size variable _cu_offset_size @@ -913,7 +914,11 @@ namespace eval Dwarf { # Here label is a section offset. set label [lindex $line 1] - _op .${_cu_offset_size}byte $label + if { $_cu_version == 2 } { + _op .${_cu_addr_size}byte $label + } else { + _op .${_cu_offset_size}byte $label + } _op .sleb128 [lindex $line 2] } |