diff options
author | Kevin Buettner <kevinb@redhat.com> | 2015-10-29 21:53:51 -0700 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2015-11-07 11:08:37 -0700 |
commit | c6f0b406f56ac5232d08cbd88c0bddfb2f640e90 (patch) | |
tree | ca39636cfd0b5649bcd4bac897f0adb7dbe03b32 /gdb | |
parent | f01dcfd9a7954462ea08d2c7b24dad0ca5e07db2 (diff) | |
download | gdb-c6f0b406f56ac5232d08cbd88c0bddfb2f640e90.zip gdb-c6f0b406f56ac5232d08cbd88c0bddfb2f640e90.tar.gz gdb-c6f0b406f56ac5232d08cbd88c0bddfb2f640e90.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/data-loc.exp | 3 | ||||
-rw-r--r-- | 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} } } |