[patch][branch] Fix "save breakpoints" for watchpoints

Thiago Jung Bauermann
2011-04-08T20:42:12Z

Hi,

When I converted watchpoints to use the breakpoint_ops struct, I
inadvertently broke saving watchpoints to a file, because
save_breakpoints doesn't check whether tp->ops->print_recreate is NULL
before calling it (as is customary before calling breakpoint_ops
methods). This results in a segfault since I didn't provide an
implementation for that method for watchpoints (save_breakpoints is
capable of dealing with watchpoints). This simple patch fixes the bug.

No regressions on i386-linux. Ok for HEAD and the branch?

[0] - http://sourceware.org/ml/gdb-patches/2011-01/msg00228.html
--
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center

2011-04-08 Thiago Jung Bauermann <bauerman@br.ibm.com>

* breakpoint.c (save_breakpoints): Verify whether
breakpoint_ops.print_recreate is defined before calling it.

Index: gdb.git/gdb/breakpoint.c
===================================================================
--- gdb.git.orig/gdb/breakpoint.c 2011-04-08 16:09:31.000000000 -0300
+++ gdb.git/gdb/breakpoint.c 2011-04-08 16:23:24.000000000 -0300
@@ -12337,7 +12337,7 @@ save_breakpoints (char *filename, int fr
if (filter && !filter (tp))
continue;

- if (tp->ops != NULL)
+ if (tp->ops != NULL && tp->ops->print_recreate != NULL)
(tp->ops->print_recreate) (tp, fp);
else
{