From: Yao Qi Date: Wed, 15 Apr 2015 13:04:40 +0000 (+0100) Subject: Fix fails in gdb.dwarf2/dynarr-ptr.exp X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8cbc97c629061306efb30aa83440bec7380c584e;p=binutils-gdb.git Fix fails in gdb.dwarf2/dynarr-ptr.exp I see many fails in gdb.dwarf2/dynarr-ptr.exp on arm-linux target, started from this print foo.three_ptr.all^M Cannot access memory at address 0x107c8^M (gdb) FAIL: gdb.dwarf2/dynarr-ptr.exp: print foo.three_ptr.all print foo.three_ptr.all(1)^M Cannot access memory at address 0x107c8 It turns out that ":$ptr_size" is used incorrectly. array_ptr_label: DW_TAG_pointer_type { {DW_AT_byte_size :$ptr_size } ^^^^^^^^^^ {DW_AT_type :$array_label} } Since the FORM isn't given, and it starts with the ":", it is regarded as a label reference by dwarf assembler. The generated asm file on x86_64 is .uleb128 6 /* Abbrev (DW_TAG_pointer_type) */ .4byte 8 - .Lcu1_begin <----- WRONG .4byte .Llabel2 - .Lcu1_begin Looks .Lcu1_begin is 0 on x86_64 and that is why this test passes on x86_64. On arm, .Lcu1_begin is an address somewhere, and the value of DW_AT_byte_size is a very large number, so memory read request of such large length failed. This patch is to remove ":" and set the form explicitly. The generated asm file on x86_64 becomes .uleb128 6 /* Abbrev (DW_TAG_pointer_type) */ .byte 8 .4byte .Llabel2 - .Lcu1_begin gdb/testsuite: 2015-04-15 Yao Qi * gdb.dwarf2/dynarr-ptr.exp (assemble): Use $ptr_size instead of ":$ptr_size" and set its form explicitly. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6098a620eb4..9fa680d0d4c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-04-15 Yao Qi + + * gdb.dwarf2/dynarr-ptr.exp (assemble): Use $ptr_size instead + of ":$ptr_size" and set its form explicitly. + 2015-04-15 Pedro Alves Yao Qi diff --git a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp index 544509bd37c..3dcb3d77018 100644 --- a/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp +++ b/gdb/testsuite/gdb.dwarf2/dynarr-ptr.exp @@ -74,7 +74,7 @@ Dwarf::assemble $asm_file { } } array_ptr_label: DW_TAG_pointer_type { - {DW_AT_byte_size :$ptr_size } + {DW_AT_byte_size $ptr_size DW_FORM_data1} {DW_AT_type :$array_label} } array_typedef_label: DW_TAG_typedef {