This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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]
 		}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]