mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
gdb/
* breakpoint.c (bpstat_copy): Call RELEASE_VALUE on the new OLD_VAL. gdb/testsuite/ * gdb.base/value-double-free.exp, gdb.base/value-double-free.c: New.
This commit is contained in:
parent
42f0bc8eaf
commit
3c3185ac88
@ -1,3 +1,7 @@
|
|||||||
|
2008-07-07 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* breakpoint.c (bpstat_copy): Call RELEASE_VALUE on the new OLD_VAL.
|
||||||
|
|
||||||
2008-07-07 Pedro Alves <pedro@codesourcery.com>
|
2008-07-07 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
* i386-dicos-tdep.c: Include "inferior.h".
|
* i386-dicos-tdep.c: Include "inferior.h".
|
||||||
|
@ -1996,7 +1996,10 @@ bpstat_copy (bpstat bs)
|
|||||||
if (bs->commands != NULL)
|
if (bs->commands != NULL)
|
||||||
tmp->commands = copy_command_lines (bs->commands);
|
tmp->commands = copy_command_lines (bs->commands);
|
||||||
if (bs->old_val != NULL)
|
if (bs->old_val != NULL)
|
||||||
tmp->old_val = value_copy (bs->old_val);
|
{
|
||||||
|
tmp->old_val = value_copy (bs->old_val);
|
||||||
|
release_value (tmp->old_val);
|
||||||
|
}
|
||||||
|
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
/* This is the first thing in the chain. */
|
/* This is the first thing in the chain. */
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2008-07-07 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* gdb.base/value-double-free.exp, gdb.base/value-double-free.c: New.
|
||||||
|
|
||||||
2008-06-28 Vladimir Prus <vladimir@codesourcery.com>
|
2008-06-28 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
* lib/mi-support.exp (mi_send_resuming_command_raw): Revert
|
* lib/mi-support.exp (mi_send_resuming_command_raw): Revert
|
||||||
|
36
gdb/testsuite/gdb.base/value-double-free.c
Normal file
36
gdb/testsuite/gdb.base/value-double-free.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* This testcase is part of GDB, the GNU debugger.
|
||||||
|
|
||||||
|
Copyright 2008 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/>.
|
||||||
|
|
||||||
|
Please email any bugs, comments, and/or additions to this file to:
|
||||||
|
bug-gdb@prep.ai.mit.edu */
|
||||||
|
|
||||||
|
volatile int var;
|
||||||
|
|
||||||
|
void
|
||||||
|
empty (void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
var = 1;
|
||||||
|
/* Workaround PR 38: We may miss the first watchpoint hit as we stop on the
|
||||||
|
exact instruction which would cause the watchpoint hit. */
|
||||||
|
var = 2;
|
||||||
|
return 0;
|
||||||
|
}
|
38
gdb/testsuite/gdb.base/value-double-free.exp
Normal file
38
gdb/testsuite/gdb.base/value-double-free.exp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Copyright 2008 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/>.
|
||||||
|
|
||||||
|
set testfile value-double-free
|
||||||
|
set srcfile ${testfile}.c
|
||||||
|
set binfile ${objdir}/${subdir}/${testfile}
|
||||||
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
||||||
|
untested "Couldn't compile test program"
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get things started.
|
||||||
|
|
||||||
|
gdb_exit
|
||||||
|
gdb_start
|
||||||
|
gdb_reinitialize_dir $srcdir/$subdir
|
||||||
|
gdb_load ${binfile}
|
||||||
|
|
||||||
|
if ![runto_main] {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
gdb_test "watch var" "atchpoint \[0-9\]+: var"
|
||||||
|
gdb_test "continue" "atchpoint \[0-9\]+: var.*Old value = 0.*New value = \[12\].*"
|
||||||
|
gdb_test "print empty()" " = void"
|
||||||
|
# We did segfault here.
|
||||||
|
gdb_test "help help"
|
Loading…
Reference in New Issue
Block a user