From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32722 invoked by alias); 21 Apr 2010 06:38:42 -0000 Received: (qmail 32689 invoked by uid 22791); 21 Apr 2010 06:38:37 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI,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, 21 Apr 2010 06:38:30 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o3L6cSSN004832 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 21 Apr 2010 02:38:28 -0400 Received: from host0.dyn.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o3L6cQbw021209 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 21 Apr 2010 02:38:28 -0400 Received: from host0.dyn.jankratochvil.net (localhost [127.0.0.1]) by host0.dyn.jankratochvil.net (8.14.4/8.14.4) with ESMTP id o3L6cPhw012332; Wed, 21 Apr 2010 08:38:25 +0200 Received: (from jkratoch@localhost) by host0.dyn.jankratochvil.net (8.14.4/8.14.4/Submit) id o3L6cO8L012323; Wed, 21 Apr 2010 08:38:24 +0200 Date: Wed, 21 Apr 2010 06:38:00 -0000 From: Jan Kratochvil To: Keith Seitz Cc: gdb-patches@sourceware.org Subject: Re: [RFA] Delayed physname computation Message-ID: <20100421063824.GA11777@host0.dyn.jankratochvil.net> References: <4BCE0D3C.7040201@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4BCE0D3C.7040201@redhat.com> User-Agent: Mutt/1.5.20 (2009-08-17) 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: 2010-04/txt/msg00670.txt.bz2 Hi Keith, just fixed up / simplified the testcase. m68k: gdb.dwarf2/pr11465.S:44: Error: unknown pseudo-op: `.value' And with -nostdlib link to executable: /usr/bin/ld: Dwarf Error: Can't find .debug_ranges section. /usr/bin/ld: Dwarf Error: mangled line number section (bad file number). /usr/bin/ld: Dwarf Error: mangled line number section (bad file number). /usr/bin/ld: Dwarf Error: mangled line number section (bad file number). /usr/bin/ld: Dwarf Error: mangled line number section (bad file number). (.debug_info+0xb9): undefined reference to `.LFB2' (.debug_info+0xbd): undefined reference to `.LFE2' (.debug_info+0xc1): undefined reference to `.LLST0' (.debug_info+0xe6): undefined reference to `.LFB3' (.debug_info+0xea): undefined reference to `.LFE3' (.debug_info+0xee): undefined reference to `.LLST1' Thanks, Jan testsuite/ 2010-04-21 Keith Seitz Jan Kratochvil * gdb.dwarf2/pr11465.exp: New test. * gdb.dwarf2/pr11465.S: New file. --- /dev/null 2010-04-21 05:45:28.789093911 +0200 +++ gdb/testsuite/gdb.dwarf2/pr11465.exp 2010-04-21 08:29:26.000000000 +0200 @@ -0,0 +1,39 @@ +# Copyright 2010 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 . + +# This test can only be run on targets which support DWARF-2 and use gas. +# For now pick a sampling of likely targets. +if {![istarget *-*-linux*] + && ![istarget *-*-gnu*] + && ![istarget *-*-elf*] + && ![istarget *-*-openbsd*] + && ![istarget arm-*-eabi*] + && ![istarget powerpc-*-eabi*]} { + return 0 +} + +set testfile "pr11465" +set srcfile ${testfile}.S +set executable ${testfile}.x +set binfile ${objdir}/${subdir}/${executable} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {}] != "" } { + return -1 +} + +clean_restart $executable + +# Test delayed physname computations +gdb_test "p N::c.C" { = {void \(N::C \*, void \(\*\)\(N::C\)\)}.*} --- /dev/null 2010-04-21 05:45:28.789093911 +0200 +++ gdb/testsuite/gdb.dwarf2/pr11465.S 2010-04-21 08:25:54.000000000 +0200 @@ -0,0 +1,355 @@ +/* Copyright 2010 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 . */ + +/* Compiled from: + + namespace N + { + class C + { + public: + typedef void (*t) (C); + C (t) {} + }; + typedef C::t u; + u f; + C c (f); + }; + + int + main () + { + return 0; + } +*/ + + .text +_ZN1N1cE: + .section .debug_info +d: + .long .Ldebug_info_end - 1f /* Length of CU info */ +1: + .2byte 0x2 /* DWARF version number */ + .long .Ldebug_abbrev0 /* Abbrev offset */ + .byte 0x4 /* Pointer size */ +dieb: .uleb128 0x1 /* DW_TAG_compile_unit */ + .long .LASF4 /* DW_AT_producer */ + .byte 0x4 /* DW_AT_language */ + .long .LASF5 /* DW_AT_name */ + .long .LASF6 /* DW_AT_comp_dir */ + .long 0x0 /* DW_AT_low_pc */ + .long 0x0 /* DW_AT_high_pc */ + .long 0x0 /* DW_AT_entry_pc */ +die29: .uleb128 0x2 /* DW_TAG_namespace */ + .string "N" /* DW_AT_name */ +die32: .uleb128 0x3 /* DW_TAG_class_type */ + .string "C" /* DW_AT_name */ + .byte 0x1 /* DW_AT_declaration */ +die36: .uleb128 0x4 /* DW_TAG_typedef */ + .string "u" /* DW_AT_name */ + .long die7e-d /* DW_AT_type */ +die3f: .uleb128 0x5 /* DW_TAG_variable */ + .string "f" /* DW_AT_name */ + .long .LASF0 /* DW_AT_MIPS_linkage_name */ + .long die36-d /* DW_AT_type */ + .byte 0x1 /* DW_AT_external */ + .byte 0x1 /* DW_AT_declaration */ +die4e: .uleb128 0x5 /* DW_TAG_variable */ + .string "c" /* DW_AT_name */ + .long .LASF1 /* DW_AT_MIPS_linkage_name */ + .long die5e-d /* DW_AT_type */ + .byte 0x1 /* DW_AT_external */ + .byte 0x1 /* DW_AT_declaration */ + .byte 0x0 +die5e: .uleb128 0x6 /* DW_TAG_class_type */ + .long die32-d /* DW_AT_specification */ + .byte 0x1 /* DW_AT_byte_size */ +die6a: .uleb128 0x7 /* DW_TAG_subprogram */ + .byte 0x1 /* DW_AT_external */ + .string "C" /* DW_AT_name */ + .byte 0x1 /* DW_AT_declaration */ +die71: .uleb128 0x8 /* DW_TAG_formal_parameter */ + .long die8f-d /* DW_AT_type */ + .byte 0x1 /* DW_AT_artificial */ +die77: .uleb128 0x9 /* DW_TAG_formal_parameter */ + .long die7e-d /* DW_AT_type */ + .byte 0x0 + .byte 0x0 +die7e: .uleb128 0xa /* DW_TAG_pointer_type */ + .byte 0x4 /* DW_AT_byte_size */ + .long die84-d /* DW_AT_type */ +die84: .uleb128 0xb /* DW_TAG_subroutine_type */ +die89: .uleb128 0x9 /* DW_TAG_formal_parameter */ + .long die5e-d /* DW_AT_type */ + .byte 0x0 +die8f: .uleb128 0xa /* DW_TAG_pointer_type */ + .byte 0x4 /* DW_AT_byte_size */ + .long die5e-d /* DW_AT_type */ +die95: .uleb128 0xc /* DW_TAG_subprogram */ + .long die6a-d /* DW_AT_specification */ + .byte 0x2 /* DW_AT_inline */ +die9f: .uleb128 0xd /* DW_TAG_formal_parameter */ + .long .LASF7 /* DW_AT_name */ + .long dieaf-d /* DW_AT_type */ + .byte 0x1 /* DW_AT_artificial */ +diea9: .uleb128 0x9 /* DW_TAG_formal_parameter */ + .long die7e-d /* DW_AT_type */ + .byte 0x0 +dieaf: .uleb128 0xe /* DW_TAG_const_type */ + .long die8f-d /* DW_AT_type */ +dieb4: .uleb128 0xf /* DW_TAG_subprogram */ + .long die95-d /* DW_AT_abstract_origin */ + .long _ZN1N1cE /* DW_AT_low_pc */ + .long _ZN1N1cE /* DW_AT_high_pc */ +diec9: .uleb128 0x10 /* DW_TAG_subprogram */ + .long die9f-d /* DW_AT_abstract_origin */ + .byte 2f-1f /* DW_AT_location */ +1: + .byte 0x50 /* DW_OP_reg0 */ +2: +died1: .uleb128 0x10 /* DW_TAG_formal_parameter */ + .long diea9-d /* DW_AT_abstract_origin */ + .byte 2f-1f /* DW_AT_location */ +1: + .byte 0x51 /* DW_OP_reg1 */ +2: + .byte 0x0 +dieda: .uleb128 0x11 /* DW_TAG_subprogram */ + .byte 0x1 /* DW_AT_external */ + .long .LASF8 /* DW_AT_name */ + .long dief2-d /* DW_AT_type */ + .long _ZN1N1cE /* DW_AT_low_pc */ + .long _ZN1N1cE /* DW_AT_high_pc */ +dief2: .uleb128 0x12 /* DW_TAG_base_type */ + .byte 0x4 /* DW_AT_byte_size */ + .byte 0x5 /* DW_AT_encoding */ + .string "int" /* DW_AT_name */ +die149: .uleb128 0x16 /* DW_TAG_variable */ + .long die4e-d /* DW_AT_specification */ + .byte 0x5 /* DW_AT_location */ + .byte 0x3 + .long _ZN1N1cE + .byte 0x0 +.Ldebug_info_end: + .section .debug_abbrev +.Ldebug_abbrev0: + .uleb128 0x1 /* abbrev code*/ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x25 /* DW_AT_producer*/ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x1b /* DW_AT_comp_dir */ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x52 /* DW_AT_entry_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .byte 0x0 + .byte 0x0 + .uleb128 0x2 /* abbrev code */ + .uleb128 0x39 /* DW_TAG_namespace */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .byte 0x0 + .byte 0x0 + .uleb128 0x3 /* abbrev code */ + .uleb128 0x2 /* DW_TAG_class_type */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x3c /* DW_AT_declaration */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 + .byte 0x0 + .uleb128 0x4 /* abbrev code */ + .uleb128 0x16 /* DW_TAG_typedef */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .byte 0x0 + .byte 0x0 + .uleb128 0x5 /* abbrev code */ + .uleb128 0x34 /* DW_TAG_variable */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x2007 /* DW_AT_MIPS_linkage_name */ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x49 /* DW_AT_TYPE */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3c /* DW_AT_declaration */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 + .byte 0x0 + .uleb128 0x6 /* abbrev code */ + .uleb128 0x2 /* DW_TAG_class_type */ + .byte 0x1 /* DW_has_children_yes */ + .uleb128 0x47 /* DW_AT_specification */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0xb /* DW_AT_byte_size */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 + .byte 0x0 + .uleb128 0x7 /* abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogra */ + .byte 0x1 /* DW_has_children_yes */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x3c /* DW_AT_declaration */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 + .byte 0x0 + .uleb128 0x8 /* abbrev code */ + .uleb128 0x5 /* DW_TAG_formal_parameter */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x34 /* DW_AT_artificial */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 + .byte 0x0 + .uleb128 0x9 /* abbrev code */ + .uleb128 0x5 /* DW_TAG_formal_parameter */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .byte 0x0 + .byte 0x0 + .uleb128 0xa /* abbrev code */ + .uleb128 0xf /* DW_TAG_pointer_type */ + .byte 0x0 /* DW_has_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 0xb /* abbrev code */ + .uleb128 0x15 /* DW_TAG_subroutine_type */ + .byte 0x1 /* DW_has_children_yes */ + .byte 0x0 + .byte 0x0 + .uleb128 0xc /* abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0x1 /* DW_has_children_yes */ + .uleb128 0x47 /* DW_AT_specification */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x20 /* DW_AT_inline */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 + .byte 0x0 + .uleb128 0xd /* abbrev code */ + .uleb128 0x5 /* DW_TAG_formal_parameter */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x34 /* DW_AT_artificial */ + .uleb128 0xc /* DW_FORM_flag */ + .byte 0x0 + .byte 0x0 + .uleb128 0xe /* abbrev code */ + .uleb128 0x26 /* DW_TAG_const_type */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .byte 0x0 + .byte 0x0 + .uleb128 0xf /* abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0x1 /* DW_has_children_yes */ + .uleb128 0x31 /* DW_AT_abstract_origin */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .byte 0x0 + .byte 0x0 + .uleb128 0x10 /* abbrev code */ + .uleb128 0x5 /* DW_TAG_formal_parameter */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x31 /* DW_AT_abstract_origin */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x2 /* DW_AT_location */ + .uleb128 0xa /* DW_FORM_block1 */ + .byte 0x0 + .byte 0x0 + .uleb128 0x11 /* abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0xe /* DW_FORM_strp */ + .uleb128 0x49 /* DW_AT_type */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x11 /* DW_AT_low_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .uleb128 0x12 /* DW_AT_high_pc */ + .uleb128 0x1 /* DW_FORM_addr */ + .byte 0x0 + .byte 0x0 + .uleb128 0x12 /* abbrev code */ + .uleb128 0x24 /* DW_TAG_base_type */ + .byte 0x0 /* DW_has_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 0x0 + .byte 0x0 + .uleb128 0x16 /* abbrev code */ + .uleb128 0x34 /* DW_TAG_variable */ + .byte 0x0 /* DW_has_children_no */ + .uleb128 0x47 /* DW_AT_specification */ + .uleb128 0x13 /* DW_FORM_ref4 */ + .uleb128 0x2 /* DW_AT_location */ + .uleb128 0xa /* DW_FORM_block1 */ + .byte 0x0 + .byte 0x0 + .byte 0x0 + .section .debug_str +.LASF0: + .string "_ZN1N1fE" +.LASF7: + .string "this" +.LASF6: + .string "" +.LASF8: + .string "main" +.LASF1: + .string "_ZN1N1cE" +.LASF5: + .string "pr11465.cc" +.LASF4: + .string "GNU C++ 4.4.2" + .ident "GCC: (GNU) 4.4.2"