* symfile.c (find_separate_debug_file_by_debuglink): Remove
	a gdb_assert call, new comment.

gdb/testsuite/
	* gdb.base/solib-nodir.exp: New file.
	* lib/gdb.exp (runto): New case for a GDB internal error.
This commit is contained in:
Jan Kratochvil 2010-07-20 22:19:07 +00:00
parent 51d7d80300
commit 569b05a560
5 changed files with 71 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2010-07-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* symfile.c (find_separate_debug_file_by_debuglink): Remove
a gdb_assert call, new comment.
2010-07-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* linux-nat.c (linux_handle_extended_wait): Handle case when

View File

@ -1374,15 +1374,13 @@ find_separate_debug_file_by_debuglink (struct objfile *objfile)
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)). */

View File

@ -1,3 +1,8 @@
2010-07-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/solib-nodir.exp: New file.
* lib/gdb.exp (runto): New case for a GDB internal error.
2010-07-20 Jan Kratochvil <jan.kratochvil@redhat.com>
Ulrich Weigand <uweigand@de.ibm.com>
Tom Tromey <tromey@redhat.com>

View File

@ -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 <http://www.gnu.org/licenses/>. */
# 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
}

View File

@ -423,6 +423,11 @@ proc runto { function args } {
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