From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5259 invoked by alias); 20 Jul 2010 22:24:12 -0000 Received: (qmail 5250 invoked by uid 22791); 20 Jul 2010 22:24:11 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_BJ,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; Tue, 20 Jul 2010 22:24:04 +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.13.8/8.13.8) with ESMTP id o6KMO2B4017136 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 20 Jul 2010 18:24:03 -0400 Received: from host1.dyn.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o6KMNxav025403 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 20 Jul 2010 18:24:02 -0400 Received: from host1.dyn.jankratochvil.net (localhost [127.0.0.1]) by host1.dyn.jankratochvil.net (8.14.4/8.14.4) with ESMTP id o6KMNx9M028428; Wed, 21 Jul 2010 00:23:59 +0200 Received: (from jkratoch@localhost) by host1.dyn.jankratochvil.net (8.14.4/8.14.4/Submit) id o6KMNwQE028427; Wed, 21 Jul 2010 00:23:58 +0200 Date: Tue, 20 Jul 2010 22:24:00 -0000 From: Jan Kratochvil To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [patch] Fix internal error on library without dirname Message-ID: <20100720222358.GA25917@host1.dyn.jankratochvil.net> References: <20100720214451.GA28276@host1.dyn.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-12-10) 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-07/txt/msg00326.txt.bz2 On Wed, 21 Jul 2010 00:03:35 +0200, Tom Tromey wrote: > There is a comment just before the loop above the assert that is now > invalid: > > /* Strip off the final filename part, leaving the directory name, > followed by a slash. Objfile names should always be absolute and > tilde-expanded, so there should always be a slash in there > somewhere. */ > > This patch is ok with some suitable change to this comment. Used - hopefully OK: /* Strip off the final filename part, leaving the directory name, - followed by a slash. Objfile names should always be absolute and - tilde-expanded, so there should always be a slash in there - somewhere. */ + followed by a slash. The directory can be relative or absolute. */ Checked-in: http://sourceware.org/ml/gdb-cvs/2010-07/msg00118.html Checked-in gdb_7_2-branch: http://sourceware.org/ml/gdb-cvs/2010-07/msg00119.html Thanks, Jan http://sourceware.org/ml/gdb-cvs/2010-07/msg00118.html --- src/gdb/ChangeLog 2010/07/20 12:54:57 1.12002 +++ src/gdb/ChangeLog 2010/07/20 22:19:06 1.12003 @@ -1,5 +1,10 @@ 2010-07-20 Jan Kratochvil + * symfile.c (find_separate_debug_file_by_debuglink): Remove + a gdb_assert call, new comment. + +2010-07-20 Jan Kratochvil + * linux-nat.c (linux_handle_extended_wait): Handle case when event == PTRACE_EVENT_CLONE && stopping && WSTOPSIG (status) != SIGSTOP. --- src/gdb/symfile.c 2010/07/13 20:52:52 1.290 +++ src/gdb/symfile.c 2010/07/20 22:19:07 1.291 @@ -1374,15 +1374,13 @@ dir = xstrdup (objfile->name); /* Strip off the final filename part, leaving the directory name, - followed by a slash. Objfile names should always be absolute and - tilde-expanded, so there should always be a slash in there - somewhere. */ + followed by a slash. The directory can be relative or absolute. */ for (i = strlen(dir) - 1; i >= 0; i--) { if (IS_DIR_SEPARATOR (dir[i])) break; } - gdb_assert (i >= 0 && IS_DIR_SEPARATOR (dir[i])); + /* If I is -1 then no directory is present there and DIR will be "". */ dir[i+1] = '\0'; /* Set I to max (strlen (canon_name), strlen (dir)). */ --- src/gdb/testsuite/ChangeLog 2010/07/20 22:06:59 1.2383 +++ src/gdb/testsuite/ChangeLog 2010/07/20 22:19:07 1.2384 @@ -1,4 +1,9 @@ 2010-07-20 Jan Kratochvil + + * gdb.base/solib-nodir.exp: New file. + * lib/gdb.exp (runto): New case for a GDB internal error. + +2010-07-20 Jan Kratochvil Ulrich Weigand Tom Tromey --- src/gdb/testsuite/gdb.base/solib-nodir.exp +++ src/gdb/testsuite/gdb.base/solib-nodir.exp 2010-07-20 22:23:49.482644000 +0000 @@ -0,0 +1,54 @@ +# 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 . */ + +# are we on a target board +if {![isnative] || [skip_shlib_tests]} { + return +} + +set testfile "solib-nodir" +# Arbitrary file, possibly not containing main, even an empty one. +set srclibfile foo.c +# Arbitrary file containing main. +set srcfile start.c +set binlibfilebase ${testfile}.so +set binlibfiledir ${objdir}/${subdir} +set binlibfile ${binlibfiledir}/${binlibfilebase} +set executable ${testfile} +set objfile ${objdir}/${subdir}/${executable}.o +set binfile ${objdir}/${subdir}/${executable} + +# build the first test case +if { [get_compiler_info unused] + || [gdb_compile_shlib "${srcdir}/${subdir}/${srclibfile}" "${binlibfile}" [list debug additional_flags=-Wl,-soname,${binlibfilebase}]] != "" + || [gdb_gnu_strip_debug $binlibfile] + || [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug}] != "" + || [gdb_compile "${objfile} ${binlibfile}" "${binfile}" executable {}] != "" } { + untested ${testfile}.exp + return -1 +} + +clean_restart $executable +gdb_load_shlibs ${binlibfile} + +gdb_test_no_output "set env LD_LIBRARY_PATH=:" +gdb_test "cd ${binlibfiledir}" "Working directory [string_to_regexp ${binlibfiledir}]\\." + +set test "library loaded" +if [runto_main] { + pass $test +} else { + fail $test +} --- src/gdb/testsuite/lib/gdb.exp 2010/07/12 17:33:15 1.154 +++ src/gdb/testsuite/lib/gdb.exp 2010/07/20 22:19:07 1.155 @@ -423,6 +423,11 @@ unsupported "Non-stop mode not supported" return 0 } + -re ".*A problem internal to GDB has been detected" { + fail "running to $function in runto (GDB internal error)" + gdb_internal_error_resync + return 0 + } -re "$gdb_prompt $" { fail "running to $function in runto" return 0