From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32762 invoked by alias); 6 Jun 2012 15:56:41 -0000 Received: (qmail 32751 invoked by uid 22791); 6 Jun 2012 15:56:40 -0000 X-SWARE-Spam-Status: No, hits=-5.5 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 06 Jun 2012 15:56:22 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q56FuLbk021347 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 6 Jun 2012 11:56:21 -0400 Received: from host2.jankratochvil.net (ovpn-116-47.ams2.redhat.com [10.36.116.47]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q56FuGn5016411 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 6 Jun 2012 11:56:19 -0400 Date: Wed, 06 Jun 2012 15:56:00 -0000 From: Jan Kratochvil To: Doug Evans Cc: gdb-patches@sourceware.org Subject: Re: [patch] info-fun-opt.exp Message-ID: <20120606155616.GB5691@host2.jankratochvil.net> References: <20120605063506.E76E71E1222@ruffy2.mtv.corp.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120605063506.E76E71E1222@ruffy2.mtv.corp.google.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-06/txt/msg00187.txt.bz2 On Tue, 05 Jun 2012 08:35:06 +0200, Doug Evans wrote: > (gdb) info fun foo > ../../gdb.git/gdb/dwarf2read.c:3049: internal-error: dw2_find_pc_sect_symtab: Assertion `result != NULL' failed. > A problem internal to GDB has been detected, > further debugging may prove unreliable. > Quit this debugging session? (y or n) FAIL: gdb.opt/info-fun-opt.exp: info fun foo (GDB internal error) > > > 2012-06-04 Doug Evans > > * gdb.opt/info-fun-opt.cc: New file. > * gdb.opt/info-fun-opt.exp: New file. I would prefer the patch below as a dependency on specific compiler output has proven to be fragile. In this case the important was ELF symbol: 0000000000400750 W non-virtual thunk to M::foo() Thanks, Jan gdb/testsuite/ 2012-06-06 Jan Kratochvil * gdb.dwarf2/dw2-minsym-in-cu.S: New file. * gdb.dwarf2/dw2-minsym-in-cu.exp: New file. diff --git a/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S b/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S new file mode 100644 index 0000000..2f8068e --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.S @@ -0,0 +1,108 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2004, 2007-2012 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 . */ + + .text +.Lbegin_text1: + + .globl main + .type main, %function +main: +.Lbegin_main: + .int 0 +.Lend_main: + .size main, .-main + + .globl func2 + .type func2, %function +func2: + .int 0 + .size func2, .-func2 + +.Lend_text1: + +/* Debug information */ + + .section .debug_info +.Lcu1_begin: + /* CU header */ + .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ +.Lcu1_start: + .2byte 2 /* DWARF Version */ + .4byte .Labbrev1_begin /* Offset into abbrev section */ + .byte 4 /* Pointer size */ + + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lend_text1 /* DW_AT_high_pc */ + .4byte .Lbegin_text1 /* DW_AT_low_pc */ + .ascii "file1.txt\0" /* DW_AT_name */ + .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ + .byte 1 /* DW_AT_language (C) */ + + /* main */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 1 /* DW_AT_external */ + .ascii "main\0" /* DW_AT_name */ + .4byte .Ldebug_ranges /* DW_AT_ranges */ + + .byte 0 /* End of children of CU */ +.Lcu1_end: + +/* DW_AT_ranges. */ + .section .debug_ranges +.Ldebug_ranges: + .4byte .Lbegin_main + .4byte .Lend_main - 1 + /* Make it slightly more interesting to set pending_addrmap_interesting. */ + .4byte .Lend_main - 1 + .4byte .Lend_main + .4byte 0 + .4byte 0 + +/* Abbrev table */ + .section .debug_abbrev +.Labbrev1_begin: + .uleb128 1 /* Abbrev code */ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 1 /* has_children */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x25 /* DW_AT_producer */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 2 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0 /* has_children */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x55 /* DW_AT_ranges */ + .uleb128 0x6 /* DW_FORM_data4 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ diff --git a/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp b/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp new file mode 100644 index 0000000..60e80c9 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-minsym-in-cu.exp @@ -0,0 +1,34 @@ +# Copyright 2004-2005, 2007-2012 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 . +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +if {![dwarf2_support]} { + return 0 +} + +# This testfile has reproducibility only with cc-with-index.sh. + +set testfile "dw2-minsym-in-cu" +set srcfile ${testfile}.S +set executable ${testfile} + +if [prepare_for_testing ${testfile}.exp ${executable} ${srcfile}] { + return -1 +} + +# Ask for address which is still located in this CU but not described by +# any DIE. +gdb_test "info fun func2"