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] gdb.dwarf2: Don't hardcode certain constants in Dwarf::assemble constructs


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c6f0b406f56ac5232d08cbd88c0bddfb2f640e90

commit c6f0b406f56ac5232d08cbd88c0bddfb2f640e90
Author: Kevin Buettner <kevinb@redhat.com>
Date:   Thu Oct 29 21:53:51 2015 -0700

    gdb.dwarf2: Don't hardcode certain constants in Dwarf::assemble constructs
    
    Two tests in gdb.dwarf2, data-loc.exp and dynarr-ptr.exp assume that
    sizeof(int) is 4.  This patch looks up the integer size and uses this
    constant for DW_AT_byte_size, DW_AT_lower_bound, and DW_AT_upper_bound.
    
    I discovered this problem while looking at test results for this
    msp430 multilib:
    
    msp430-sim/-msim/-mcpu=msp430x/-mlarge/-mdata-region=either/-mcode-region=either
    
    It fixes the following set of failures:
    
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr.all'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr_tdef.all'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr_tdef'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.five_ptr.all'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.five_ptr'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.five_ptr_tdef.all'first
    FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.five_ptr_tdef'first
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three(1)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three(2)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three(3)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three_tdef
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three_tdef(1)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three_tdef(2)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.three_tdef(3)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five(2)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five(3)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five(4)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five(5)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five(6)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef(2)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef(3)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef(4)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef(5)
    FAIL: gdb.dwarf2/data-loc.exp: print foo.five_tdef(6)
    FAIL: gdb.dwarf2/data-loc.exp: print foo__three
    FAIL: gdb.dwarf2/data-loc.exp: print foo__three_tdef
    FAIL: gdb.dwarf2/data-loc.exp: print foo__five
    FAIL: gdb.dwarf2/data-loc.exp: print foo__five_tdef
    
    As I recall, there are still (other) problems with msp430 multilibs
    which don't use -mlarge.
    
    gdb/testsuite/ChangeLog:
    
    	* gdb.dwarf2/data-loc.exp (Dwarf::assemble): Don't hardcode
    	value associated with DW_AT_byte_size.
    	* gdb.dwarf2/dynarr-ptr.exp (Dwarf::assemble): Don't hardcode
    	constants for DW_AT_byte_size, DW_AT_lower_bound, and
    	DW_AT_upper_bound.

Diff:
---
 gdb/testsuite/ChangeLog                 |  8 ++++++++
 gdb/testsuite/gdb.dwarf2/data-loc.exp   |  3 ++-
 gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp | 11 ++++++-----
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 16d5726..31a59f4 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,13 @@
 2015-11-07  Kevin Buettner  <kevinb@redhat.com>
 
+	* gdb.dwarf2/data-loc.exp (Dwarf::assemble): Don't hardcode
+	value associated with DW_AT_byte_size.
+	* gdb.dwarf2/dynarr-ptr.exp (Dwarf::assemble): Don't hardcode
+	constants for DW_AT_byte_size, DW_AT_lower_bound, and
+	DW_AT_upper_bound.
+
+2015-11-07  Kevin Buettner  <kevinb@redhat.com>
+
 	* lib/gdb (gdb_target_symbol_prefix_flags_asm): New proc.
 	(gdb_target_symbol_prefix_flags): Define in terms of _asm
 	version.
diff --git a/gdb/testsuite/gdb.dwarf2/data-loc.exp b/gdb/testsuite/gdb.dwarf2/data-loc.exp
index a1fb772..1bc40e9 100644
--- a/gdb/testsuite/gdb.dwarf2/data-loc.exp
+++ b/gdb/testsuite/gdb.dwarf2/data-loc.exp
@@ -43,9 +43,10 @@ Dwarf::assemble $asm_file {
                 {DW_AT_comp_dir /tmp}
         } {
             declare_labels integer_label array_label array_ptr_label
+	    set int_size [get_sizeof "int" 4]
 
             integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
+                {DW_AT_byte_size $int_size DW_FORM_sdata}
                 {DW_AT_encoding  @DW_ATE_signed}
                 {DW_AT_name      integer}
             }
diff --git a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
index 0a612fe..47f64c7 100644
--- a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
+++ b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp
@@ -45,9 +45,10 @@ Dwarf::assemble $asm_file {
             declare_labels integer_label array_label array_ptr_label \
                 array_typedef_label
             set ptr_size [get_sizeof "void *" 96]
+	    set int_size [get_sizeof "int" 4]
 
             integer_label: DW_TAG_base_type {
-                {DW_AT_byte_size 4 DW_FORM_sdata}
+                {DW_AT_byte_size $int_size DW_FORM_sdata}
                 {DW_AT_encoding  @DW_ATE_signed}
                 {DW_AT_name      integer}
             }
@@ -61,15 +62,15 @@ Dwarf::assemble $asm_file {
 		    {DW_AT_type        :$integer_label}
                     {DW_AT_lower_bound {
                         DW_OP_push_object_address
-                        DW_OP_lit8
+                        DW_OP_const1u [expr {2 * $int_size}]
                         DW_OP_minus
-                        DW_OP_deref_size 4
+                        DW_OP_deref_size $int_size
                     } SPECIAL_expr}
                     {DW_AT_upper_bound {
                         DW_OP_push_object_address
-                        DW_OP_lit4
+			DW_OP_const1u $int_size
                         DW_OP_minus
-                        DW_OP_deref_size 4
+                        DW_OP_deref_size $int_size
                     } SPECIAL_expr}
 		}
 	    }


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