From patchwork Mon Sep 29 00:52:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 3016 Received: (qmail 13711 invoked by alias); 29 Sep 2014 00:56:48 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 13675 invoked by uid 89); 29 Sep 2014 00:56:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 29 Sep 2014 00:56:44 +0000 Received: from svr-orw-fem-03.mgc.mentorg.com ([147.34.97.39]) by relay1.mentorg.com with esmtp id 1XYPGb-0003Ag-HM from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Sun, 28 Sep 2014 17:56:41 -0700 Received: from qiyao.dyndns.org.com (147.34.91.1) by svr-orw-fem-03.mgc.mentorg.com (147.34.97.39) with Microsoft SMTP Server id 14.3.181.6; Sun, 28 Sep 2014 17:56:40 -0700 From: Yao Qi To: Subject: [PATCH 1/2] Use Dwarf::assemble in implptr-optimized-out.exp Date: Mon, 29 Sep 2014 08:52:00 +0800 Message-ID: <1411951921-16168-2-git-send-email-yao@codesourcery.com> In-Reply-To: <1411951921-16168-1-git-send-email-yao@codesourcery.com> References: <1411951921-16168-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 X-IsSubscribed: yes This patch is to use dwarf::assemble to generate debug information, and remove implptr-optimized-out.S as a result. The dwarf assembler output is identical to original implptr-optimized-out.S. gdb/testsuite: 2014-09-29 Yao Qi * gdb.dwarf2/implptr-optimized-out.exp: Use Dwarf::assemble to produce debug information. * gdb.dwarf2/implptr-optimized-out.S: Removed. --- gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S | 166 --------------------- gdb/testsuite/gdb.dwarf2/implptr-optimized-out.exp | 63 +++++++- 2 files changed, 60 insertions(+), 169 deletions(-) delete mode 100644 gdb/testsuite/gdb.dwarf2/implptr-optimized-out.S 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 eeebd54..0000000 --- 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 26ca407..649f52d 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 } { + 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 }