Fix crash during stepping on ppc32.
	* ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code): Test NULL
	SYM.

gdb/testsuite/
	Fix crash during stepping on ppc32.
	* gdb.base/step-symless.c: New file.
	* gdb.base/step-symless.exp: New file.
This commit is contained in:
Jan Kratochvil 2012-10-06 21:10:33 +00:00
parent 39dc86500a
commit 2e24f4aab7
5 changed files with 94 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2012-10-06 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix crash during stepping on ppc32.
* ppc-linux-tdep.c (powerpc_linux_in_dynsym_resolve_code): Test NULL
SYM.
2012-10-03 Doug Evans <dje@google.com>
PR symtab/14601

View File

@ -648,8 +648,9 @@ powerpc_linux_in_dynsym_resolve_code (CORE_ADDR pc)
/* Check if we are in the resolver. */
sym = lookup_minimal_symbol_by_pc (pc);
if ((strcmp (SYMBOL_LINKAGE_NAME (sym), "__glink") == 0)
|| (strcmp (SYMBOL_LINKAGE_NAME (sym), "__glink_PLTresolve") == 0))
if (sym != NULL
&& (strcmp (SYMBOL_LINKAGE_NAME (sym), "__glink") == 0
|| strcmp (SYMBOL_LINKAGE_NAME (sym), "__glink_PLTresolve") == 0))
return 1;
return 0;

View File

@ -1,3 +1,9 @@
2012-10-06 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix crash during stepping on ppc32.
* gdb.base/step-symless.c: New file.
* gdb.base/step-symless.exp: New file.
2012-10-03 Doug Evans <dje@google.com>
PR symtab/14601

View File

@ -0,0 +1,38 @@
/* This testcase is part of GDB, the GNU debugger.
Copyright 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 <http://www.gnu.org/licenses/>. */
static volatile int v;
static void
symful (void)
{
v++;
}
static void
symless (void)
{
v++;
}
int
main (void)
{
symless ();
symful ();
return 0;
}

View File

@ -0,0 +1,41 @@
# Copyright (C) 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 <http://www.gnu.org/licenses/>.
standard_testfile
if {[build_executable ${testfile}.exp ${testfile} ${srcfile} {nodebug}] == -1} {
return -1
}
# We need those symbols global to access them from the .S file.
set test "strip stub symbols"
set objcopy_program [transform objcopy]
set result [catch "exec $objcopy_program -N symless ${binfile}" output]
verbose "result is $result"
verbose "output is $output"
if {$result != 0} {
fail $test
return
}
pass $test
clean_restart $testfile
if ![runto_main] {
return -1
}
gdb_breakpoint symful
gdb_test "step" "Single stepping until exit.*no line number information.*\r\nBreakpoint \[^\r\n\]* in \\.?symful \\(\\)"