This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Handle DW_OP_GNU_implicit_pointer in dwarf assembler
- From: Yao Qi <qiyao at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 25 Jan 2017 16:26:32 -0000
- Subject: [binutils-gdb] Handle DW_OP_GNU_implicit_pointer in dwarf assembler
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5ac95241162bf4729ecaf3c880cdaa846a3aded4
commit 5ac95241162bf4729ecaf3c880cdaa846a3aded4
Author: Yao Qi <yao.qi@linaro.org>
Date: Wed Jan 25 16:24:44 2017 +0000
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.
Diff:
---
gdb/testsuite/ChangeLog | 5 +++++
gdb/testsuite/lib/dwarf.exp | 7 ++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
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]
}