summaryrefslogtreecommitdiff
path: root/gdb/testsuite/lib
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2017-01-25 16:24:44 +0000
committerYao Qi <yao.qi@linaro.org>2017-01-25 16:24:44 +0000
commit5ac95241162bf4729ecaf3c880cdaa846a3aded4 (patch)
tree9b80e933c42503c214029adde4ca6b23fceb90ed /gdb/testsuite/lib
parenta1aa5e81de977805b16f2b1b9a12027a7f61c20c (diff)
downloadbinutils-gdb-5ac95241162bf4729ecaf3c880cdaa846a3aded4.tar.gz
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/testsuite/lib')
-rw-r--r--gdb/testsuite/lib/dwarf.exp7
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp
index 9f5fa6ca09f..03ae63746cb 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]
}