From f166b542723928ab8ecd5cd1788e6c1161bf3315 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 14 Nov 2014 08:53:08 +0800 Subject: [PATCH] Use Dwarf::assemble in implptr-optimized-out.exp This patch is to use dwarf::assemble to generate debug information, and remove implptr-optimized-out.S as a result. gdb/testsuite: 2014-11-14 Yao Qi * gdb.dwarf2/implptr-optimized-out.exp: Use Dwarf::assemble to produce debug information. * gdb.dwarf2/implptr-optimized-out.S: Removed. --- gdb/testsuite/ChangeLog | 6 + .../gdb.dwarf2/implptr-optimized-out.S | 166 ------------------ .../gdb.dwarf2/implptr-optimized-out.exp | 63 ++++++- 3 files changed, 66 insertions(+), 169 deletions(-) delete mode 100644 gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 5e9b9dfc398..51ed4fa944e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-11-14 Yao Qi + + * gdb.dwarf2/implptr-optimized-out.exp: Use Dwarf::assemble to + produce debug information. + * gdb.dwarf2/implptr-optimized-out.S: Removed. + 2014-11-14 Yao Qi * gdb.dwarf2/dwz.exp: Remove the code to compile main.c to diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S deleted file mode 100644 index eeebd54442e..00000000000 --- a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S +++ /dev/null @@ -1,166 +0,0 @@ -/* Copyright 2010-2014 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - - .section .debug_info -d: - .4byte debug_end - 1f /* Length of Compilation Unit Info */ -1: - .2byte 0x3 /* DWARF version number */ - .4byte .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ - .byte 0x4 /* Pointer Size (in bytes) */ - .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */ - .ascii "GNU C 4.4.3\0" /* DW_AT_producer */ - .byte 0x1 /* DW_AT_language */ - .ascii "1.c\0" /* DW_AT_name */ - -.Ltype_int: - .uleb128 0x7 /* DW_TAG_base_type */ - .byte 0x4 /* DW_AT_byte_size */ - .byte 0x5 /* DW_AT_encoding */ - .ascii "int\0" /* DW_AT_name */ - -.Ltype_struct: - .uleb128 0x2 /* DW_TAG_structure_type */ - .ascii "s\0" /* DW_AT_name */ - .byte 4 /* DW_AT_byte_size */ - - .uleb128 0x3 /* DW_TAG_member */ - .ascii "f\0" /* DW_AT_name */ - .4byte .Ltype_int - d /* DW_AT_type */ - .byte 0 /* DW_AT_data_member_location */ - - .byte 0x0 /* end of children of DW_TAG_structure_type */ - - .uleb128 6 /* Abbrev: DW_TAG_subprogram */ - .ascii "main\0" /* DW_AT_name */ - .4byte main /* DW_AT_low_pc */ - .4byte main + 0x100 /* DW_AT_high_pc */ - .4byte .Ltype_int - d /* DW_AT_type */ - .byte 1 /* DW_AT_external */ - -.Ltype_structptr: - .uleb128 0x5 /* DW_TAG_pointer_type */ - .byte 0x4 /* DW_AT_byte_size */ - .4byte .Ltype_struct - d /* DW_AT_type */ - -.Lvar_out: - .uleb128 0x4 /* (DW_TAG_variable) */ - .ascii "v\0" /* DW_AT_name */ - .byte 0 /* DW_AT_location: DW_FORM_block1 */ - .4byte .Ltype_struct - d /* DW_AT_type */ - - .uleb128 0x4 /* (DW_TAG_variable) */ - .ascii "p\0" /* DW_AT_name */ - .byte 2f - 1f /* DW_AT_location: DW_FORM_block1 */ -1: - .byte 0xf2 /* DW_OP_GNU_implicit_pointer */ - .4byte .Lvar_out /* referenced DIE, section-relative! */ - .sleb128 0 /* offset */ -2: - .4byte .Ltype_structptr - d /* DW_AT_type */ - - .byte 0x0 /* end of children of main */ - - .byte 0x0 /* end of children of CU */ -debug_end: - - .section .debug_abbrev -.Ldebug_abbrev0: - - .uleb128 0x1 /* (abbrev code) */ - .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */ - .byte 0x1 /* DW_children_yes */ - .uleb128 0x25 /* (DW_AT_producer) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .uleb128 0x13 /* (DW_AT_language) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .uleb128 0x3 /* (DW_AT_name) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .byte 0x0 - .byte 0x0 - - .uleb128 0x2 /* (abbrev code) */ - .uleb128 0x13 /* (TAG: DW_TAG_structure_type) */ - .byte 0x1 /* DW_children_yes */ - .uleb128 0x3 /* (DW_AT_name) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .uleb128 0xb /* (DW_AT_byte_size) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .byte 0 - .byte 0 - - .uleb128 0x3 /* (abbrev code) */ - .uleb128 0xd /* (TAG: DW_TAG_member) */ - .byte 0 /* DW_children_no */ - .uleb128 0x3 /* (DW_AT_name) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .uleb128 0x49 /* (DW_AT_type) */ - .uleb128 0x13 /* (DW_FORM_ref4) */ - .uleb128 0x38 /* (DW_AT_data_member_location) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .byte 0 - .byte 0 - - .uleb128 0x4 /* (abbrev code) */ - .uleb128 0x34 /* (TAG: DW_TAG_variable) */ - .byte 0x0 /* DW_children_yes */ - .uleb128 0x3 /* (DW_AT_name) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .uleb128 0x02 /* (DW_AT_location) */ - .uleb128 0xa /* (DW_FORM_block1) */ - .uleb128 0x49 /* (DW_AT_type) */ - .uleb128 0x13 /* (DW_FORM_ref4) */ - .byte 0x0 - .byte 0x0 - - .uleb128 0x5 /* (abbrev code) */ - .uleb128 0xf /* (TAG: DW_TAG_pointer_type) */ - .byte 0x0 /* DW_children_no */ - .uleb128 0xb /* (DW_AT_byte_size) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .uleb128 0x49 /* (DW_AT_type) */ - .uleb128 0x13 /* (DW_FORM_ref4) */ - .byte 0x0 - .byte 0x0 - - .uleb128 6 /* Abbrev code */ - .uleb128 0x2e /* DW_TAG_subprogram */ - .byte 1 /* has_children */ - .uleb128 0x3 /* DW_AT_name */ - .uleb128 0x8 /* DW_FORM_string */ - .uleb128 0x11 /* DW_AT_low_pc */ - .uleb128 0x1 /* DW_FORM_addr */ - .uleb128 0x12 /* DW_AT_high_pc */ - .uleb128 0x1 /* DW_FORM_addr */ - .uleb128 0x49 /* DW_AT_type */ - .uleb128 0x13 /* DW_FORM_ref4 */ - .uleb128 0x3f /* DW_AT_external */ - .uleb128 0xc /* DW_FORM_flag */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - - .uleb128 0x7 /* (abbrev code) */ - .uleb128 0x24 /* (TAG: DW_TAG_base_type) */ - .byte 0 /* DW_children_no */ - .uleb128 0xb /* (DW_AT_byte_size) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .uleb128 0x3e /* (DW_AT_encoding) */ - .uleb128 0xb /* (DW_FORM_data1) */ - .uleb128 0x3 /* (DW_AT_name) */ - .uleb128 0x8 /* (DW_FORM_string) */ - .byte 0 - .byte 0 - - .byte 0x0 diff --git a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp index 26ca407708a..226fc5cb890 100644 --- a/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp +++ b/gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp @@ -19,11 +19,68 @@ if {![dwarf2_support]} { return 0 } -standard_testfile .S -set mainfile main.c +standard_testfile main.c .S set executable ${testfile} -if [prepare_for_testing ${testfile}.exp $executable "${srcfile} ${mainfile}" {}] { +# Create the DWARF. +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + cu { version 3 addr_size 4 } { + compile_unit { + {producer "GNU C 4.4.3"} + {language @DW_LANG_C89} + {name 1.c} + } { + declare_labels int_label struct_label pointer_label variable_label + + int_label: base_type { + {byte_size 4 sdata} + {encoding @DW_ATE_signed} + {name int} + } + + struct_label: structure_type { + {name s} + {byte_size 4 sdata} + } { + member { + {name f} + {type :$int_label} + {data_member_location 0 data1} + } + } + + subprogram { + {name main} + {low_pc main addr} + {high_pc main+0x100 addr} + {type :$int_label} + {external 1 flag} + } { + pointer_label: pointer_type { + {byte_size 4 sdata} + {type :$struct_label} + } + + variable_label: DW_TAG_variable { + {name v} + {location {} DW_FORM_block1} + {type :$struct_label} + } + + DW_TAG_variable { + {name p} + {location { + GNU_implicit_pointer $variable_label 0 + } SPECIAL_expr} + {type :$pointer_label} + } + } + } + } +} + +if [prepare_for_testing ${testfile}.exp $executable "${asm_file} ${srcfile}" {}] { return -1 } -- 2.30.2