- Fix error on a sw watchpoint active at function epilogue (hit on s390x).
- testsuite: Fix false MI "unknown output after running" regression. - testsuite: Update ia64-sigtramp.exp for recent GDB. - Implement bt-clone-stop.exp fix also for ia64. - testsuite: Upstream condbreak.exp results stability fix (Daniel Jacobowitz).
This commit is contained in:
parent
709107db49
commit
a259cc2ba7
|
@ -41,7 +41,7 @@ testsuite:
|
||||||
+
|
+
|
||||||
--- gdb-6.3/gdb/testsuite/gdb.arch/ia64-sigtramp.exp.fix 2005-07-25 16:42:50.000000000 -0400
|
--- gdb-6.3/gdb/testsuite/gdb.arch/ia64-sigtramp.exp.fix 2005-07-25 16:42:50.000000000 -0400
|
||||||
+++ gdb-6.3/gdb/testsuite/gdb.arch/ia64-sigtramp.exp 2005-07-25 16:42:01.000000000 -0400
|
+++ gdb-6.3/gdb/testsuite/gdb.arch/ia64-sigtramp.exp 2005-07-25 16:42:01.000000000 -0400
|
||||||
@@ -0,0 +1,66 @@
|
@@ -0,0 +1,73 @@
|
||||||
+# Copyright 2005 Free Software Foundation, Inc.
|
+# Copyright 2005 Free Software Foundation, Inc.
|
||||||
+
|
+
|
||||||
+# This program is free software; you can redistribute it and/or modify
|
+# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -90,7 +90,10 @@ testsuite:
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+gdb_exit
|
+gdb_exit
|
||||||
|
+set match_max_old [match_max]
|
||||||
|
+match_max -d 1000000
|
||||||
+gdb_start
|
+gdb_start
|
||||||
|
+match_max -d $match_max_old
|
||||||
+gdb_reinitialize_dir $srcdir/$subdir
|
+gdb_reinitialize_dir $srcdir/$subdir
|
||||||
+gdb_load ${binfile}
|
+gdb_load ${binfile}
|
||||||
+
|
+
|
||||||
|
@ -106,5 +109,9 @@ testsuite:
|
||||||
+gdb_test "continue" "Breakpoint.*x.*" "continue to x"
|
+gdb_test "continue" "Breakpoint.*x.*" "continue to x"
|
||||||
+
|
+
|
||||||
+gdb_test "f 1" ".*signal handler called.*" "frame 1"
|
+gdb_test "f 1" ".*signal handler called.*" "frame 1"
|
||||||
+gdb_test "info frame" "Stack level 1.*p63 at .*" "info sigtramp frame"
|
+
|
||||||
+
|
+# gdb-7.0+ no longer prints the pseudo registers as they are computed.
|
||||||
|
+# frame_info says: /* For moment, only display registers that were saved on the
|
||||||
|
+# stack. */
|
||||||
|
+gdb_test "set debug frame 1"
|
||||||
|
+gdb_test "info frame" "Stack level 1, .*frame_unwind_register_value \\(frame=1,regnum=750\\(p63\\),\[^\r\n\]*\r\n\[^\r\n\]*-> computed bytes=.*" "info sigtramp frame"
|
||||||
|
|
|
@ -1,128 +0,0 @@
|
||||||
--- /dev/null 2008-04-03 00:39:30.714021604 +0200
|
|
||||||
+++ gdb-6.3/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c 2008-04-05 20:26:29.000000000 +0200
|
|
||||||
@@ -0,0 +1,23 @@
|
|
||||||
+/* 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 2 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, write to the Free Software
|
|
||||||
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+jumper (void (*jumpto) (void))
|
|
||||||
+{
|
|
||||||
+ (*jumpto) ();
|
|
||||||
+}
|
|
||||||
--- /dev/null 2008-04-03 00:39:30.714021604 +0200
|
|
||||||
+++ gdb-6.3/gdb/testsuite/gdb.base/watchpoint-cond-gone.c 2008-04-05 20:26:48.000000000 +0200
|
|
||||||
@@ -0,0 +1,37 @@
|
|
||||||
+/* 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 2 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, write to the Free Software
|
|
||||||
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|
||||||
+
|
|
||||||
+extern void jumper (void (*jumpto) (void));
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+func ()
|
|
||||||
+{
|
|
||||||
+ int a, b, c;
|
|
||||||
+
|
|
||||||
+ a = b = c = 5;
|
|
||||||
+ a = b = c = 10; /* watchpoint-here */
|
|
||||||
+ c = a + b;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ jumper (func);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
--- /dev/null 2008-04-03 00:39:30.714021604 +0200
|
|
||||||
+++ gdb-6.3/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp 2008-04-05 20:33:19.000000000 +0200
|
|
||||||
@@ -0,0 +1,59 @@
|
|
||||||
+# 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 2 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, write to the Free Software
|
|
||||||
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
+
|
|
||||||
+if $tracelevel then {
|
|
||||||
+ strace $tracelevel
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+set testfile "watchpoint-cond-gone"
|
|
||||||
+set srcfile ${testfile}.c
|
|
||||||
+set srcfilestripped ${testfile}-stripped.c
|
|
||||||
+set objfilestripped ${objdir}/${subdir}/${testfile}-stripped.o
|
|
||||||
+set binfile ${objdir}/${subdir}/${testfile}
|
|
||||||
+
|
|
||||||
+# We need to generate a function without DWARF to crash older GDB.
|
|
||||||
+# Stepping into a dynamic function trampoline or stepping out of MAIN may work
|
|
||||||
+# but it is not a reliable FAIL case.
|
|
||||||
+
|
|
||||||
+if { [gdb_compile "${srcdir}/${subdir}/${srcfilestripped}" "${objfilestripped}" object {}] != "" } {
|
|
||||||
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${objfilestripped}" "${binfile}" executable {debug}] != "" } {
|
|
||||||
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+gdb_exit
|
|
||||||
+gdb_start
|
|
||||||
+gdb_reinitialize_dir $srcdir/$subdir
|
|
||||||
+gdb_load ${binfile}
|
|
||||||
+
|
|
||||||
+# Problem does not occur otherwise.
|
|
||||||
+gdb_test "set can-use-hw-watchpoints 0"
|
|
||||||
+
|
|
||||||
+runto_main
|
|
||||||
+gdb_breakpoint [gdb_get_line_number "watchpoint-here"]
|
|
||||||
+gdb_continue_to_breakpoint "Place to set the watchpoint"
|
|
||||||
+
|
|
||||||
+# The condition `c == 30' is the tested culprit.
|
|
||||||
+gdb_test "watch c if c == 30" "" "Place the watchpoint"
|
|
||||||
+
|
|
||||||
+# No functionality, just to check the state.
|
|
||||||
+gdb_test "backtrace"
|
|
||||||
+
|
|
||||||
+gdb_test "finish" \
|
|
||||||
+ "Watchpoint .* deleted because the program has left the block in.*which its expression is valid..*in (jumper|func).*" \
|
|
||||||
+ "Catch the no longer valid watchpoint"
|
|
|
@ -162,6 +162,154 @@ Index: gdb-6.8.50.20090802/gdb/amd64-tdep.c
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Floating-point registers. */
|
/* Floating-point registers. */
|
||||||
|
--- a/gdb/ia64-tdep.c
|
||||||
|
+++ b/gdb/ia64-tdep.c
|
||||||
|
@@ -2122,6 +2122,137 @@ static const struct frame_unwind ia64_frame_unwind =
|
||||||
|
default_frame_sniffer
|
||||||
|
};
|
||||||
|
|
||||||
|
+/* Detect the outermost frame; during unwind of
|
||||||
|
+ #6 0x2000000000347100 in __clone2 () from /lib/libc.so.6.1
|
||||||
|
+ avoid the additional bogus frame
|
||||||
|
+ #7 0x0000000000000000 in ?? () */
|
||||||
|
+
|
||||||
|
+static char linux_clone2_code[] =
|
||||||
|
+{
|
||||||
|
+/* libc/sysdeps/unix/sysv/linux/ia64/clone2.S */
|
||||||
|
+ 0x09, 0x00, 0x20, 0x12, 0x90, 0x11, 0x00, 0x40,
|
||||||
|
+ 0x28, 0x20, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00,
|
||||||
|
+/* st4 [r9]=r8 */
|
||||||
|
+/* st4 [r10]=r8 */
|
||||||
|
+/* ;; */
|
||||||
|
+/* #endif */
|
||||||
|
+ 0x02, 0x50, 0x21, 0x40, 0x18, 0x14, 0x90, 0x02,
|
||||||
|
+ 0x90, 0x00, 0x42, 0x00, 0x00, 0x00, 0x04, 0x00,
|
||||||
|
+/* 1: ld8 out1=[in0],8 |* Retrieve code pointer. *| */
|
||||||
|
+/* mov out0=in4 |* Pass proper argument to fn *| */
|
||||||
|
+/* ;; */
|
||||||
|
+ 0x11, 0x08, 0x00, 0x40, 0x18, 0x10, 0x60, 0x50,
|
||||||
|
+ 0x05, 0x80, 0x03, 0x00, 0x68, 0x00, 0x80, 0x12,
|
||||||
|
+/* ld8 gp=[in0] |* Load function gp. *| */
|
||||||
|
+/* mov b6=out1 */
|
||||||
|
+/* br.call.dptk.many rp=b6 |* Call fn(arg) in the child *| */
|
||||||
|
+/* ;; */
|
||||||
|
+ 0x10, 0x48, 0x01, 0x10, 0x00, 0x21, 0x10, 0x00,
|
||||||
|
+ 0xa0, 0x00, 0x42, 0x00, 0x98, 0xdf, 0xf7, 0x5b,
|
||||||
|
+/* mov out0=r8 |* Argument to _exit *| */
|
||||||
|
+/* mov gp=loc0 */
|
||||||
|
+/* .globl HIDDEN_JUMPTARGET(_exit) */
|
||||||
|
+/* br.call.dpnt.many rp=HIDDEN_JUMPTARGET(_exit) */
|
||||||
|
+/* |* call _exit with result from fn. *| */
|
||||||
|
+ 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00
|
||||||
|
+/* ret |* Not reached. *| */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#define LINUX_CLONE_PRE_SLOTS 3 /* Number of slots before PC. */
|
||||||
|
+#define LINUX_CLONE_LEN (sizeof linux_clone2_code)
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+ia64_linux_clone2_running (struct frame_info *this_frame)
|
||||||
|
+{
|
||||||
|
+ CORE_ADDR pc = get_frame_pc (this_frame);
|
||||||
|
+ char buf[LINUX_CLONE_LEN];
|
||||||
|
+ struct minimal_symbol *minsym;
|
||||||
|
+ long long instr;
|
||||||
|
+
|
||||||
|
+ if (!safe_frame_unwind_memory (this_frame, pc - LINUX_CLONE_PRE_SLOTS * 16,
|
||||||
|
+ buf, LINUX_CLONE_LEN))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (memcmp (buf, linux_clone2_code, LINUX_CLONE_PRE_SLOTS * 16) != 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ /* Adjust the expected "_exit" address. */
|
||||||
|
+ minsym = lookup_minimal_symbol_text ("_exit", NULL);
|
||||||
|
+ if (minsym == NULL)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ instr = slotN_contents (&buf[LINUX_CLONE_PRE_SLOTS * 16], 2);
|
||||||
|
+ instr &= ~(((1L << 20) - 1) << 13);
|
||||||
|
+ /* Address is relative to the jump instruction slot, not the next one. */
|
||||||
|
+ instr |= (((SYMBOL_VALUE_ADDRESS (minsym) - (pc & ~0xfL)) >> 4)
|
||||||
|
+ & ((1L << 20) - 1)) << 13;
|
||||||
|
+ replace_slotN_contents (&buf[LINUX_CLONE_PRE_SLOTS * 16], instr, 2);
|
||||||
|
+
|
||||||
|
+ if (memcmp (&buf[LINUX_CLONE_PRE_SLOTS * 16],
|
||||||
|
+ &linux_clone2_code[LINUX_CLONE_PRE_SLOTS * 16],
|
||||||
|
+ LINUX_CLONE_LEN - (LINUX_CLONE_PRE_SLOTS * 16)) != 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+ia64_outermost_frame (struct frame_info *this_frame)
|
||||||
|
+{
|
||||||
|
+ CORE_ADDR pc = get_frame_pc (this_frame);
|
||||||
|
+ char *name;
|
||||||
|
+
|
||||||
|
+ find_pc_partial_function (pc, &name, NULL, NULL);
|
||||||
|
+
|
||||||
|
+ /* If we have NAME, we can optimize the search.
|
||||||
|
+ `clone' NAME still needs to have the code checked as its name may be
|
||||||
|
+ present in the user code.
|
||||||
|
+ `__clone' NAME should not be present in the user code but in the initial
|
||||||
|
+ parts of the `__clone' implementation the unwind still makes sense.
|
||||||
|
+ More detailed unwinding decision would be too much sensitive to possible
|
||||||
|
+ subtle changes in specific glibc revisions. */
|
||||||
|
+ if (name == NULL || strcmp (name, "clone2") == 0
|
||||||
|
+ || strcmp ("__clone2", name) == 0)
|
||||||
|
+ return (ia64_linux_clone2_running (this_frame) != 0);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+ia64_clone2_frame_this_id (struct frame_info *this_frame, void **this_cache,
|
||||||
|
+ struct frame_id *this_id)
|
||||||
|
+{
|
||||||
|
+ /* Leave the default outermost frame at *THIS_ID. */
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct value *
|
||||||
|
+ia64_clone2_frame_prev_register (struct frame_info *this_frame,
|
||||||
|
+ void **this_cache, int regnum)
|
||||||
|
+{
|
||||||
|
+ return frame_unwind_got_register (this_frame, regnum, regnum);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
+ia64_clone2_frame_sniffer (const struct frame_unwind *self,
|
||||||
|
+ struct frame_info *this_frame,
|
||||||
|
+ void **this_prologue_cache)
|
||||||
|
+{
|
||||||
|
+ if (ia64_outermost_frame (this_frame))
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct frame_unwind ia64_clone2_frame_unwind =
|
||||||
|
+{
|
||||||
|
+ NORMAL_FRAME,
|
||||||
|
+ &ia64_clone2_frame_this_id,
|
||||||
|
+ &ia64_clone2_frame_prev_register,
|
||||||
|
+ NULL,
|
||||||
|
+ &ia64_clone2_frame_sniffer
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/* Signal trampolines. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -3824,6 +3955,7 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||||
|
set_gdbarch_dummy_id (gdbarch, ia64_dummy_id);
|
||||||
|
|
||||||
|
set_gdbarch_unwind_pc (gdbarch, ia64_unwind_pc);
|
||||||
|
+ frame_unwind_append_unwinder (gdbarch, &ia64_clone2_frame_unwind);
|
||||||
|
#ifdef HAVE_LIBUNWIND_IA64_H
|
||||||
|
frame_unwind_append_unwinder (gdbarch,
|
||||||
|
&ia64_libunwind_sigtramp_frame_unwind);
|
||||||
Index: gdb-6.8.50.20090802/gdb/testsuite/gdb.threads/bt-clone-stop.c
|
Index: gdb-6.8.50.20090802/gdb/testsuite/gdb.threads/bt-clone-stop.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
|
|
@ -3221,3 +3221,65 @@ http://sourceware.org/ml/gdb-cvs/2009-12/msg00128.html
|
||||||
-# Verify GDB really could not catch any other breakpoint location.
|
-# Verify GDB really could not catch any other breakpoint location.
|
||||||
-
|
-
|
||||||
-gdb_continue_to_breakpoint "uncaught return" ".*exit-line.*"
|
-gdb_continue_to_breakpoint "uncaught return" ".*exit-line.*"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
http://sourceware.org/ml/gdb-cvs/2009-11/msg00213.html
|
||||||
|
|
||||||
|
[ cut ]
|
||||||
|
|
||||||
|
--- src/gdb/testsuite/gdb.base/condbreak.exp 2009/01/03 05:58:03 1.13
|
||||||
|
+++ src/gdb/testsuite/gdb.base/condbreak.exp 2009/11/25 20:43:29 1.14
|
||||||
|
@@ -207,10 +207,10 @@
|
||||||
|
setup_xfail hppa2.0w-*-* 11512CLLbs
|
||||||
|
send_gdb "continue\n"
|
||||||
|
gdb_expect {
|
||||||
|
- -re "Continuing\\..*Breakpoint \[0-9\]+, marker2 \\(a=43\\) at .*$srcfile1:($bp_location8|$bp_location9).*($bp_location8|$bp_location9)\[\t \]+.*" {
|
||||||
|
+ -re "Continuing\\..*Breakpoint \[0-9\]+, marker2 \\(a=43\\) at .*$srcfile1:($bp_location8|$bp_location9).*($bp_location8|$bp_location9)\[\t \]+.*$gdb_prompt $" {
|
||||||
|
pass "run until breakpoint at marker2"
|
||||||
|
}
|
||||||
|
- -re "Continuing\\..*Breakpoint \[0-9\]+, $hex in marker2 \\(a=43\\) at .*$srcfile1:($bp_location8|$bp_location9).*($bp_location8|$bp_location9)\[\t \]+.*" {
|
||||||
|
+ -re "Continuing\\..*Breakpoint \[0-9\]+, $hex in marker2 \\(a=43\\) at .*$srcfile1:($bp_location8|$bp_location9).*($bp_location8|$bp_location9)\[\t \]+.*$gdb_prompt $" {
|
||||||
|
xfail "run until breakpoint at marker2"
|
||||||
|
}
|
||||||
|
-re "$gdb_prompt $" {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Fix for gfortran-4.1:
|
||||||
|
-PASS: gdb.mi/mi-var-child-f.exp: mi runto MAIN__
|
||||||
|
+FAIL: gdb.mi/mi-var-child-f.exp: mi runto MAIN__ (unknown output after running)
|
||||||
|
|
||||||
|
RFC: Move language-changed message to verbose
|
||||||
|
http://sourceware.org/ml/gdb-patches/2009-11/msg00031.html
|
||||||
|
http://sourceware.org/ml/gdb-cvs/2009-11/msg00034.html
|
||||||
|
|
||||||
|
### src/gdb/ChangeLog 2009/11/05 19:53:03 1.11030
|
||||||
|
### src/gdb/ChangeLog 2009/11/05 20:43:52 1.11031
|
||||||
|
## -1,3 +1,8 @@
|
||||||
|
+2009-11-05 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
+
|
||||||
|
+ * top.c (execute_command): Select a frame before checking the current
|
||||||
|
+ language. Only output a message if verbose.
|
||||||
|
+
|
||||||
|
2009-11-05 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* symtab.h (SYMBOL_SET_LINKAGE_NAME): Update comment.
|
||||||
|
--- src/gdb/top.c 2009/10/19 09:51:42 1.172
|
||||||
|
+++ src/gdb/top.c 2009/11/05 20:43:52 1.173
|
||||||
|
@@ -457,10 +457,13 @@
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Tell the user if the language has changed (except first time). */
|
||||||
|
+ /* Tell the user if the language has changed (except first time).
|
||||||
|
+ First make sure that a new frame has been selected, in case this
|
||||||
|
+ command or the hooks changed the program state. */
|
||||||
|
+ deprecated_safe_get_selected_frame ();
|
||||||
|
if (current_language != expected_language)
|
||||||
|
{
|
||||||
|
- if (language_mode == language_mode_auto)
|
||||||
|
+ if (language_mode == language_mode_auto && info_verbose)
|
||||||
|
{
|
||||||
|
language_info (1); /* Print what changed. */
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
http://sourceware.org/ml/gdb-patches/2009-12/msg00473.html
|
||||||
|
Subject: [patch] testsuite: false MI "unknown output after running" regression
|
||||||
|
|
||||||
|
Hi,
|
||||||
|
|
||||||
|
the attached patch will turn the results this way:
|
||||||
|
-KFAIL: gdb.mi/mi-until.exp: until after while loop (unknown output after running) (PRMS: gdb/2104)
|
||||||
|
+KFAIL: gdb.mi/mi-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104)
|
||||||
|
-XFAIL: gdb.mi/mi-watch.exp: sw: watchpoint trigger (unknown output after running)
|
||||||
|
+XFAIL: gdb.mi/mi-watch.exp: sw: watchpoint trigger (stopped at wrong place)
|
||||||
|
-KFAIL: gdb.mi/mi2-until.exp: until after while loop (unknown output after running) (PRMS: gdb/2104)
|
||||||
|
+KFAIL: gdb.mi/mi2-until.exp: until after while loop (stopped at wrong place) (PRMS: gdb/2104)
|
||||||
|
-XFAIL: gdb.mi/mi2-watch.exp: sw: watchpoint trigger (unknown output after running)
|
||||||
|
+XFAIL: gdb.mi/mi2-watch.exp: sw: watchpoint trigger (stopped at wrong place)
|
||||||
|
|
||||||
|
This is a fix of KFAIL-kind regression due to:
|
||||||
|
commit 26d086d741fb1bb0eee9d50e0bafa7c5e388023f
|
||||||
|
Re: [RFA] fix *stopped for CLI commands
|
||||||
|
http://sourceware.org/ml/gdb-patches/2009-02/msg00278.html
|
||||||
|
http://sourceware.org/ml/gdb-cvs/2009-02/msg00084.html
|
||||||
|
part:
|
||||||
|
gdb/testsuite/
|
||||||
|
2009-02-14 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
* lib/mi-support.exp (mi_expect_stop): Adjust the order of fields.
|
||||||
|
(mi_expect_interrupt): Likewise.
|
||||||
|
* gdb.mi/mi-cli.exp: Check that "step" results in proper *stopped
|
||||||
|
response.
|
||||||
|
|
||||||
|
re-wdiff-ed for your convenience as:
|
||||||
|
verbose -log "mi_expect_stop: expecting: \\*stopped,${r}${a}${bn}[-thread-id=\"$decimal\",stopped-threads=$any,-]frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\"$any$file\",fullname=\"${fullname_syntax}$file\",line=\"$line\"\}$after_stopped{+,thread-id=\"$decimal\",stopped-threads=$any+}\r\n($thread_selected_re)?$prompt_re"
|
||||||
|
-re "\\*stopped,${r}${a}${bn}[-thread-id=\"$decimal\",stopped-threads=$any,-]frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\"$any$file\",fullname=\"${fullname_syntax}$file\",line=\"($line)\"\}$after_stopped{+,thread-id=\"$decimal\",stopped-threads=$any+}\r\n($thread_selected_re)?$prompt_re" {
|
||||||
|
-re "\\*stopped,${r}${a}${bn}[-thread-id=\"$decimal\",stopped-threads=$any,-]frame=\{addr=\"$hex\",func=\"$any\",args=\[\\\[\{\]$any\[\\\]\}\],file=\"$any\",fullname=\"${fullname_syntax}$any\",line=\"\[0-9\]*\"\}[-$any-]{+thread-id=\"$decimal\",stopped-threads=$any+}\r\n$prompt_re" {
|
||||||
|
|
||||||
|
FYI there is: set any "\[^\n\]*"
|
||||||
|
|
||||||
|
"stopped at wrong place" is the right kind of KFAIL/XFAIL (tested
|
||||||
|
gcc-4.1.2-46.el5_4.1.x86_64 and gcc-4.4.2-20.fc12.x86_64) as discussed
|
||||||
|
in PR gdb/2104.
|
||||||
|
|
||||||
|
In the last case there is missing comma (,) after the former patch above.
|
||||||
|
|
||||||
|
$after_stopped was IMO missing there even before. It is in use only by
|
||||||
|
gdb.mi/mi-simplerun.exp and gdb.mi/mi2-simplerun.exp. Also fixed below.
|
||||||
|
|
||||||
|
No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu.
|
||||||
|
|
||||||
|
|
||||||
|
Thanks,
|
||||||
|
Jan
|
||||||
|
|
||||||
|
|
||||||
|
gdb/testsuite/
|
||||||
|
2009-12-31 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* lib/mi-support.exp (mi_expect_stop <stopped at wrong place>): Insert
|
||||||
|
missing $after_stopped and comma (,) expectation.
|
||||||
|
|
||||||
|
--- a/gdb/testsuite/lib/mi-support.exp
|
||||||
|
+++ b/gdb/testsuite/lib/mi-support.exp
|
||||||
|
@@ -1038,7 +1038,7 @@ proc mi_expect_stop { reason func args file line extra test } {
|
||||||
|
pass "$test"
|
||||||
|
return $expect_out(2,string)
|
||||||
|
}
|
||||||
|
- -re "\\*stopped,${r}${a}${bn}frame=\{addr=\"$hex\",func=\"$any\",args=\[\\\[\{\]$any\[\\\]\}\],file=\"$any\",fullname=\"${fullname_syntax}$any\",line=\"\[0-9\]*\"\}thread-id=\"$decimal\",stopped-threads=$any\r\n$prompt_re" {
|
||||||
|
+ -re "\\*stopped,${r}${a}${bn}frame=\{addr=\"$hex\",func=\"$any\",args=\[\\\[\{\]$any\[\\\]\}\],file=\"$any\",fullname=\"${fullname_syntax}$any\",line=\"\[0-9\]*\"\}$after_stopped,thread-id=\"$decimal\",stopped-threads=$any\r\n$prompt_re" {
|
||||||
|
verbose -log "got $expect_out(buffer)"
|
||||||
|
fail "$test (stopped at wrong place)"
|
||||||
|
return -1
|
||||||
|
|
|
@ -0,0 +1,231 @@
|
||||||
|
http://sourceware.org/ml/gdb-patches/2009-12/msg00394.html
|
||||||
|
Subject: [patch] Fix watchpoint-at-epilogue 7.0 regression (s390x)
|
||||||
|
|
||||||
|
Hi,
|
||||||
|
|
||||||
|
attached testcase regressed 6.8->7.0 on some s390x systems.
|
||||||
|
|
||||||
|
At the moment PC is at epilogue (after frame pointer got destroyed and PC is
|
||||||
|
still in the calleed function) we must not try any unwinding as it can try to
|
||||||
|
unwind a garbage.
|
||||||
|
|
||||||
|
Correct way would be to implement epilogue unwinder (such as
|
||||||
|
amd64_epilogue_frame_unwind or i386_epilogue_frame_unwind ones) but it would
|
||||||
|
not be so easy on s390x as it would need full prologue-analyzer: After SP gets
|
||||||
|
restored there can be various instructions before the last jump - GDB needs to
|
||||||
|
interpret the jump to find the register value where it is going to jump to.
|
||||||
|
00000048279aa09c <round_and_return>:
|
||||||
|
[...]
|
||||||
|
48279aa1b8: eb 6f f0 d0 00 04 lmg %r6,%r15,208(%r15)
|
||||||
|
48279aa1be: 50 32 10 00 st %r3,0(%r2,%r1) # SP (%r15) is gone hone
|
||||||
|
48279aa1c2: b3 74 00 00 lzer %r0
|
||||||
|
48279aa1c6: 07 f4 br %r4 # %r4 is the target
|
||||||
|
[...]
|
||||||
|
|
||||||
|
Just an easy fix is to be more careful and do not try any unwinding if we find
|
||||||
|
PC is in the epilogue (previous instruction modifies SP=%r15).
|
||||||
|
|
||||||
|
It is even a performance optimization and I see no regression risk there.
|
||||||
|
|
||||||
|
The specific s390x error is:
|
||||||
|
#0 throw_error (error=MEMORY_ERROR, fmt=0x8042676a "Cannot access memory at address %s") at exceptions.c:415
|
||||||
|
#1 in memory_error (status=5, memaddr=0) at corefile.c:220
|
||||||
|
#2 in read_memory (memaddr=0, myaddr=0x3ffffc7f7f0 "", len=8) at corefile.c:238
|
||||||
|
#3 in read_memory_unsigned_integer (memaddr=0, len=8, byte_order=BFD_ENDIAN_BIG) at corefile.c:321
|
||||||
|
#4 in s390_backchain_frame_unwind_cache (this_frame=0x80608958, info=0x80608a08) at s390-tdep.c:1525
|
||||||
|
#5 in s390_frame_unwind_cache (this_frame=0x80608958, this_prologue_cache=0x80608970) at s390-tdep.c:1572
|
||||||
|
#6 in s390_frame_this_id (this_frame=0x80608958, this_prologue_cache=0x80608970, this_id=0x806089b8) at s390-tdep.c:1583
|
||||||
|
#7 in get_frame_id (fi=0x80608958) at frame.c:335
|
||||||
|
#8 in frame_find_by_id (id={stack_addr = 4398044824952, code_addr = 2147484952, special_addr = 0, stack_addr_p = 1, code_addr_p = 1, special_addr_p = 0, inline_depth = 0}) at frame.c:587
|
||||||
|
#9 in watchpoint_check (p=0x8095bbc0) at breakpoint.c:3203
|
||||||
|
#10 in catch_errors (func=0x801262c0 <watchpoint_check>, func_args=0x8095bbc0, errstring=0x80a26410 "Error evaluating expression for watchpoint 3\n", mask=6) at exceptions.c:510
|
||||||
|
#11 in bpstat_check_watchpoint (bs=0x8095bbc0) at breakpoint.c:3404
|
||||||
|
#12 in bpstat_stop_status (aspace=0x8061fcb0, bp_addr=2147485040, ptid={pid = 17372, lwp = 17372, tid = 0}) at breakpoint.c:3594
|
||||||
|
#13 in handle_inferior_event (ecs=0x3ffffc80520) at infrun.c:3588
|
||||||
|
|
||||||
|
I did not analyze why 6.8 did not error out, the GDB code is similar there.
|
||||||
|
|
||||||
|
No regressions on:
|
||||||
|
{x86_64,x86_64-m32,i686}-fedora12-linux-gnu (CVS HEAD GDB)
|
||||||
|
s390x-rhel48-linux-gnu (CVS HEAD GDB)
|
||||||
|
s390-rhel48-linux-gnu (CVS HEAD GDB)
|
||||||
|
s390x-rhel54-linux-gnu (Fedora 12 GDB)
|
||||||
|
s390-rhel54-linux-gnu (Fedora 12 GDB)
|
||||||
|
|
||||||
|
|
||||||
|
Thanks,
|
||||||
|
Jan
|
||||||
|
|
||||||
|
|
||||||
|
gdb/
|
||||||
|
2009-12-25 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* breakpoint.c (watchpoint_check): Check the call
|
||||||
|
gdbarch_in_function_epilogue_p before calling frame_find_by_id.
|
||||||
|
Extend the comment.
|
||||||
|
|
||||||
|
gdb/testsuite/
|
||||||
|
2009-12-25 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* gdb.base/watchpoint-cond-gone.exp, gdb.base/watchpoint-cond-gone.c,
|
||||||
|
gdb.base/watchpoint-cond-gone-stripped.c: New.
|
||||||
|
|
||||||
|
--- a/gdb/breakpoint.c
|
||||||
|
+++ b/gdb/breakpoint.c
|
||||||
|
@@ -3200,6 +3200,17 @@ watchpoint_check (void *p)
|
||||||
|
struct gdbarch *frame_arch = get_frame_arch (frame);
|
||||||
|
CORE_ADDR frame_pc = get_frame_pc (frame);
|
||||||
|
|
||||||
|
+ /* in_function_epilogue_p() returns a non-zero value if we're still
|
||||||
|
+ in the function but the stack frame has already been invalidated.
|
||||||
|
+ Since we can't rely on the values of local variables after the
|
||||||
|
+ stack has been destroyed, we are treating the watchpoint in that
|
||||||
|
+ state as `not changed' without further checking. Don't mark
|
||||||
|
+ watchpoints as changed if the current frame is in an epilogue -
|
||||||
|
+ even if they are in some other frame, our view of the stack
|
||||||
|
+ is likely to be wrong and frame_find_by_id could error out. */
|
||||||
|
+ if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
|
||||||
|
+ return WP_VALUE_NOT_CHANGED;
|
||||||
|
+
|
||||||
|
fr = frame_find_by_id (b->watchpoint_frame);
|
||||||
|
within_current_scope = (fr != NULL);
|
||||||
|
|
||||||
|
@@ -3216,17 +3227,6 @@ watchpoint_check (void *p)
|
||||||
|
within_current_scope = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* in_function_epilogue_p() returns a non-zero value if we're still
|
||||||
|
- in the function but the stack frame has already been invalidated.
|
||||||
|
- Since we can't rely on the values of local variables after the
|
||||||
|
- stack has been destroyed, we are treating the watchpoint in that
|
||||||
|
- state as `not changed' without further checking. Don't mark
|
||||||
|
- watchpoints as changed if the current frame is in an epilogue -
|
||||||
|
- even if they are in some other frame, our view of the stack
|
||||||
|
- is likely to be wrong. */
|
||||||
|
- if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
|
||||||
|
- return WP_VALUE_NOT_CHANGED;
|
||||||
|
-
|
||||||
|
if (within_current_scope)
|
||||||
|
/* If we end up stopping, the current frame will get selected
|
||||||
|
in normal_stop. So this call to select_frame won't affect
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+/* This testcase is part of GDB, the GNU debugger.
|
||||||
|
+
|
||||||
|
+ 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 2 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, write to the Free Software
|
||||||
|
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+jumper (void (*jumpto) (void))
|
||||||
|
+{
|
||||||
|
+ (*jumpto) ();
|
||||||
|
+}
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.base/watchpoint-cond-gone.c
|
||||||
|
@@ -0,0 +1,37 @@
|
||||||
|
+/* This testcase is part of GDB, the GNU debugger.
|
||||||
|
+
|
||||||
|
+ 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 2 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, write to the Free Software
|
||||||
|
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
+
|
||||||
|
+extern void jumper (void (*jumpto) (void));
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+func (void)
|
||||||
|
+{
|
||||||
|
+ volatile int c;
|
||||||
|
+
|
||||||
|
+ c = 5;
|
||||||
|
+ c = 10; /* watchpoint-here */
|
||||||
|
+ c = 20;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+main (void)
|
||||||
|
+{
|
||||||
|
+ jumper (func);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp
|
||||||
|
@@ -0,0 +1,51 @@
|
||||||
|
+# 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 2 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, write to the Free Software
|
||||||
|
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
+
|
||||||
|
+set testfile "watchpoint-cond-gone"
|
||||||
|
+set srcfile ${testfile}.c
|
||||||
|
+set srcfilestripped ${testfile}-stripped.c
|
||||||
|
+set objfilestripped ${objdir}/${subdir}/${testfile}-stripped.o
|
||||||
|
+set binfile ${objdir}/${subdir}/${testfile}
|
||||||
|
+
|
||||||
|
+# We need to generate a function without DWARF to crash older GDB.
|
||||||
|
+# Stepping into a dynamic function trampoline or stepping out of MAIN may work
|
||||||
|
+# but it is not a reliable FAIL case.
|
||||||
|
+
|
||||||
|
+if { [gdb_compile "${srcdir}/${subdir}/${srcfilestripped}" "${objfilestripped}" object {}] != ""
|
||||||
|
+ || [gdb_compile "${srcdir}/${subdir}/${srcfile} ${objfilestripped}" "${binfile}" executable {debug}] != "" } {
|
||||||
|
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+clean_restart ${testfile}
|
||||||
|
+
|
||||||
|
+# Problem does not occur otherwise.
|
||||||
|
+gdb_test "set can-use-hw-watchpoints 0"
|
||||||
|
+
|
||||||
|
+if ![runto_main] {
|
||||||
|
+ return -1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+gdb_breakpoint [gdb_get_line_number "watchpoint-here"]
|
||||||
|
+gdb_continue_to_breakpoint "Place to set the watchpoint"
|
||||||
|
+
|
||||||
|
+# The condition `c == 30' is the subject being tested.
|
||||||
|
+gdb_test "watch c if c == 30" "" "Place the watchpoint"
|
||||||
|
+
|
||||||
|
+# We may stay either in the function itself or only at the first instruction of
|
||||||
|
+# its caller depending on the epilogue unwinder (or valid epilogue CFI) presence.
|
||||||
|
+gdb_test "finish" \
|
||||||
|
+ "Watchpoint .* deleted because the program has left the block in.*which its expression is valid..*in (jumper|func).*" \
|
||||||
|
+ "Catch the no longer valid watchpoint"
|
||||||
|
|
17
gdb.spec
17
gdb.spec
|
@ -36,7 +36,7 @@ Version: 7.0
|
||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# The release always contains a leading reserved number, start it at 1.
|
||||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 14%{?_with_upstream:.upstream}%{dist}
|
Release: 15%{?_with_upstream:.upstream}%{dist}
|
||||||
|
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
|
@ -318,8 +318,8 @@ Patch309: gdb-6.3-mapping-zero-inode-test.patch
|
||||||
# Test a crash on `focus cmd', `focus prev' commands.
|
# Test a crash on `focus cmd', `focus prev' commands.
|
||||||
Patch311: gdb-6.3-focus-cmd-prev-test.patch
|
Patch311: gdb-6.3-focus-cmd-prev-test.patch
|
||||||
|
|
||||||
# Test crash on a sw watchpoint condition getting out of the scope.
|
# Fix error on a sw watchpoint active at function epilogue (hit on s390x).
|
||||||
Patch314: gdb-6.3-watchpoint-cond-gone-test.patch
|
Patch314: gdb-watchpoint-cond-gone.patch
|
||||||
|
|
||||||
# Test various forms of threads tracking across exec() (BZ 442765).
|
# Test various forms of threads tracking across exec() (BZ 442765).
|
||||||
Patch315: gdb-6.8-bz442765-threaded-exec-test.patch
|
Patch315: gdb-6.8-bz442765-threaded-exec-test.patch
|
||||||
|
@ -423,6 +423,9 @@ Patch396: gdb-ppc-hw-watchpoint-twice.patch
|
||||||
# Fix regression by python on ia64 due to stale current frame.
|
# Fix regression by python on ia64 due to stale current frame.
|
||||||
Patch397: gdb-follow-child-stale-parent.patch
|
Patch397: gdb-follow-child-stale-parent.patch
|
||||||
|
|
||||||
|
# testsuite: Fix false MI "unknown output after running" regression.
|
||||||
|
Patch398: gdb-testsuite-unknown-output.patch
|
||||||
|
|
||||||
BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel
|
BuildRequires: ncurses-devel texinfo gettext flex bison expat-devel
|
||||||
Requires: readline
|
Requires: readline
|
||||||
BuildRequires: readline-devel
|
BuildRequires: readline-devel
|
||||||
|
@ -667,6 +670,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
|
||||||
%patch395 -p1
|
%patch395 -p1
|
||||||
%patch396 -p1
|
%patch396 -p1
|
||||||
%patch397 -p1
|
%patch397 -p1
|
||||||
|
%patch398 -p1
|
||||||
|
|
||||||
find -name "*.orig" | xargs rm -f
|
find -name "*.orig" | xargs rm -f
|
||||||
! find -name "*.rej" # Should not happen.
|
! find -name "*.rej" # Should not happen.
|
||||||
|
@ -978,6 +982,13 @@ fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 1 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-15.fc12
|
||||||
|
- Fix error on a sw watchpoint active at function epilogue (hit on s390x).
|
||||||
|
- testsuite: Fix false MI "unknown output after running" regression.
|
||||||
|
- testsuite: Update ia64-sigtramp.exp for recent GDB.
|
||||||
|
- Implement bt-clone-stop.exp fix also for ia64.
|
||||||
|
- testsuite: Upstream condbreak.exp results stability fix (Daniel Jacobowitz).
|
||||||
|
|
||||||
* Thu Dec 24 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-14.fc12
|
* Thu Dec 24 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.0-14.fc12
|
||||||
- testsuite: Fix constructortest.exp and expand-sals.exp for gcc-4.4.2-20.fc12.
|
- testsuite: Fix constructortest.exp and expand-sals.exp for gcc-4.4.2-20.fc12.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue