2009-03-05  Pedro Alves  <pedro@codesourcery.com>

	* breakpoint.c (check_duplicates_for): Skip permanent breakpoints
	duplicates of permanent breakpoints.

gdb/testsuite/
2009-03-05  Pedro Alves  <pedro@codesourcery.com>

	* gdb.arch/i386-permbkpt.S, gdb.arch/i386-permbkpt.exp: New.
This commit is contained in:
Pedro Alves 2009-03-05 22:37:11 +00:00
parent 5fa9e92f74
commit aae6458789
5 changed files with 95 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2009-03-05 Pedro Alves <pedro@codesourcery.com>
* breakpoint.c (check_duplicates_for): Skip permanent breakpoints
duplicates of permanent breakpoints.
2009-03-04 Pedro Alves <pedro@codesourcery.com> 2009-03-04 Pedro Alves <pedro@codesourcery.com>
* inferior.h (notice_new_inferior): Declare. * inferior.h (notice_new_inferior): Declare.

View File

@ -3948,8 +3948,8 @@ check_duplicates_for (CORE_ADDR address, struct obj_section *section)
} }
/* If we found a permanent breakpoint at this address, go over the /* If we found a permanent breakpoint at this address, go over the
list again and declare all the other breakpoints there to be the list again and declare all the other breakpoints there (except
duplicates. */ other permanent breakpoints) to be the duplicates. */
if (perm_bp) if (perm_bp)
{ {
perm_bp->duplicate = 0; perm_bp->duplicate = 0;
@ -3963,7 +3963,8 @@ check_duplicates_for (CORE_ADDR address, struct obj_section *section)
ALL_BP_LOCATIONS (b) ALL_BP_LOCATIONS (b)
if (b != perm_bp) if (b != perm_bp)
{ {
if (b->owner->enable_state != bp_disabled if (b->owner->enable_state != bp_permanent
&& b->owner->enable_state != bp_disabled
&& b->owner->enable_state != bp_call_disabled && b->owner->enable_state != bp_call_disabled
&& b->enabled && !b->shlib_disabled && b->enabled && !b->shlib_disabled
&& b->address == address /* address / overlay match */ && b->address == address /* address / overlay match */

View File

@ -1,3 +1,7 @@
2009-03-05 Pedro Alves <pedro@codesourcery.com>
* gdb.arch/i386-permbkpt.S, gdb.arch/i386-permbkpt.exp: New.
2009-02-18 Jan Kratochvil <jan.kratochvil@redhat.com> 2009-02-18 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/macscp.exp (objfile): Move it to ${objdir}/${subdir}/. * gdb.base/macscp.exp (objfile): Move it to ${objdir}/${subdir}/.

View File

@ -0,0 +1,30 @@
/* Copyright 2009 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/>.
This file is part of the gdb testsuite. */
#define CONCAT1(a, b) CONCAT2(a, b)
#define CONCAT2(a, b) a ## b
#ifdef SYMBOL_PREFIX
# define SYMBOL(str) CONCAT1(SYMBOL_PREFIX, str)
#else
# define SYMBOL(str) str
#endif
.global SYMBOL(main)
SYMBOL(main):
int3
ret

View File

@ -0,0 +1,52 @@
# Copyright (C) 2009 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/>.
# This file is part of the gdb testsuite.
if $tracelevel {
strace $tracelevel
}
# Test inserting breakpoints over permanent breakpoints on i386 and amd64.
if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then {
verbose "Skipping i386 test for multi break at permanent breakpoint location."
return
}
set testfile "i386-permbkpt"
set srcfile ${testfile}.S
set binfile ${objdir}/${subdir}/${testfile}
# Some targets have leading underscores on assembly symbols.
# TODO: detect this automatically
set additional_flags ""
if { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } then {
set additional_flags "additional_flags=-DSYMBOL_PREFIX=_"
}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } {
untested i386-permbkpt.exp
return -1
}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
gdb_test "break main" "" "First permanent break"
gdb_test "break main" "" "Second permanent break"