3 This patch is not submitted. Many of these functions should be passing
4 a frame around rather than calling get_selected_frame, but at least it
5 is an improvement over deprecated_selected_frame.
7 Index: gdb-6.3/gdb/breakpoint.c
8 ===================================================================
9 --- gdb-6.3.orig/gdb/breakpoint.c 2004-10-08 13:30:46.000000000 -0400
10 +++ gdb-6.3/gdb/breakpoint.c 2004-11-09 22:55:11.231620957 -0500
11 @@ -922,7 +922,7 @@ insert_bp_location (struct bp_location *
12 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
13 took a frame parameter, so that we didn't have to change the
15 - saved_frame_id = get_frame_id (deprecated_selected_frame);
16 + saved_frame_id = get_frame_id (get_selected_frame ());
18 /* Determine if the watchpoint is within scope. */
19 if (bpt->owner->exp_valid_block == NULL)
20 @@ -5464,14 +5464,9 @@ break_at_finish_at_depth_command_1 (char
22 if (default_breakpoint_valid)
24 - if (deprecated_selected_frame)
26 - selected_pc = get_frame_pc (deprecated_selected_frame);
31 - error ("No selected frame.");
32 + selected_pc = get_frame_pc (get_selected_frame ());
37 error ("No default breakpoint address now.");
38 @@ -5542,15 +5537,10 @@ break_at_finish_command_1 (char *arg, in
40 if (default_breakpoint_valid)
42 - if (deprecated_selected_frame)
44 - addr_string = xstrprintf ("*0x%s",
45 - paddr_nz (get_frame_pc (deprecated_selected_frame)));
50 - error ("No selected frame.");
51 + addr_string = xstrprintf ("*0x%s",
52 + paddr_nz (get_frame_pc (get_selected_frame ())));
57 error ("No default breakpoint address now.");
58 @@ -6082,7 +6072,7 @@ until_break_command (char *arg, int from
60 struct symtabs_and_lines sals;
61 struct symtab_and_line sal;
62 - struct frame_info *prev_frame = get_prev_frame (deprecated_selected_frame);
63 + struct frame_info *prev_frame = get_prev_frame (get_selected_frame ());
64 struct breakpoint *breakpoint;
65 struct cleanup *old_chain;
66 struct continuation_arg *arg1;
67 @@ -6119,7 +6109,7 @@ until_break_command (char *arg, int from
68 /* Otherwise, specify the current frame, because we want to stop only
69 at the very same frame. */
70 breakpoint = set_momentary_breakpoint (sal,
71 - get_frame_id (deprecated_selected_frame),
72 + get_frame_id (get_selected_frame ()),
75 if (!target_can_async_p ())
76 Index: gdb-6.3/gdb/cli/cli-cmds.c
77 ===================================================================
78 --- gdb-6.3.orig/gdb/cli/cli-cmds.c 2004-09-11 06:24:53.000000000 -0400
79 +++ gdb-6.3/gdb/cli/cli-cmds.c 2004-11-09 22:51:07.323246218 -0500
80 @@ -845,10 +845,7 @@ disassemble_command (char *arg, int from
84 - if (!deprecated_selected_frame)
85 - error ("No frame selected.\n");
87 - pc = get_frame_pc (deprecated_selected_frame);
88 + pc = get_frame_pc (get_selected_frame ());
89 if (find_pc_partial_function (pc, &name, &low, &high) == 0)
90 error ("No function contains program counter for selected frame.\n");
92 Index: gdb-6.3/gdb/f-valprint.c
93 ===================================================================
94 --- gdb-6.3.orig/gdb/f-valprint.c 2003-10-14 02:51:14.000000000 -0400
95 +++ gdb-6.3/gdb/f-valprint.c 2004-11-09 22:51:07.326245632 -0500
96 @@ -76,7 +76,7 @@ f77_get_dynamic_lowerbound (struct type
97 switch (TYPE_ARRAY_LOWER_BOUND_TYPE (type))
99 case BOUND_BY_VALUE_ON_STACK:
100 - current_frame_addr = get_frame_base (deprecated_selected_frame);
101 + current_frame_addr = get_frame_base (get_selected_frame ());
102 if (current_frame_addr > 0)
105 @@ -100,7 +100,7 @@ f77_get_dynamic_lowerbound (struct type
108 case BOUND_BY_REF_ON_STACK:
109 - current_frame_addr = get_frame_base (deprecated_selected_frame);
110 + current_frame_addr = get_frame_base (get_selected_frame ());
111 if (current_frame_addr > 0)
114 @@ -134,7 +134,7 @@ f77_get_dynamic_upperbound (struct type
115 switch (TYPE_ARRAY_UPPER_BOUND_TYPE (type))
117 case BOUND_BY_VALUE_ON_STACK:
118 - current_frame_addr = get_frame_base (deprecated_selected_frame);
119 + current_frame_addr = get_frame_base (get_selected_frame ());
120 if (current_frame_addr > 0)
123 @@ -163,7 +163,7 @@ f77_get_dynamic_upperbound (struct type
126 case BOUND_BY_REF_ON_STACK:
127 - current_frame_addr = get_frame_base (deprecated_selected_frame);
128 + current_frame_addr = get_frame_base (get_selected_frame ());
129 if (current_frame_addr > 0)
132 @@ -630,10 +630,7 @@ info_common_command (char *comname, int
133 first make sure that it is visible and if so, let
134 us display its contents */
136 - fi = deprecated_selected_frame;
139 - error ("No frame selected");
140 + fi = get_selected_frame ();
142 /* The following is generally ripped off from stack.c's routine
143 print_frame_info() */
144 @@ -722,10 +719,7 @@ there_is_a_visible_common_named (char *c
146 error ("Cannot deal with NULL common name!");
148 - fi = deprecated_selected_frame;
151 - error ("No frame selected");
152 + fi = get_selected_frame ();
154 /* The following is generally ripped off from stack.c's routine
155 print_frame_info() */
156 Index: gdb-6.3/gdb/infcmd.c
157 ===================================================================
158 --- gdb-6.3.orig/gdb/infcmd.c 2004-09-13 14:26:28.000000000 -0400
159 +++ gdb-6.3/gdb/infcmd.c 2004-11-09 22:57:37.274099559 -0500
160 @@ -1214,10 +1214,8 @@ finish_command (char *arg, int from_tty)
161 error ("The \"finish\" command does not take any arguments.");
162 if (!target_has_execution)
163 error ("The program is not running.");
164 - if (deprecated_selected_frame == NULL)
165 - error ("No selected frame.");
167 - frame = get_prev_frame (deprecated_selected_frame);
168 + frame = get_prev_frame (get_selected_frame ());
170 error ("\"finish\" not meaningful in the outermost frame.");
172 @@ -1235,7 +1233,7 @@ finish_command (char *arg, int from_tty)
174 /* Find the function we will return from. */
176 - function = find_pc_function (get_frame_pc (deprecated_selected_frame));
177 + function = find_pc_function (get_frame_pc (get_selected_frame ()));
179 /* Print info on the selected frame, including level number but not
181 @@ -1600,13 +1598,11 @@ registers_info (char *addr_exp, int fpre
183 if (!target_has_registers)
184 error ("The program has no registers now.");
185 - if (deprecated_selected_frame == NULL)
186 - error ("No selected frame.");
190 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
191 - deprecated_selected_frame, -1, fpregs);
192 + get_selected_frame (), -1, fpregs);
196 @@ -1644,7 +1640,7 @@ registers_info (char *addr_exp, int fpre
199 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
200 - deprecated_selected_frame, regnum, fpregs);
201 + get_selected_frame (), regnum, fpregs);
205 @@ -1658,7 +1654,7 @@ registers_info (char *addr_exp, int fpre
206 && regnum < NUM_REGS + NUM_PSEUDO_REGS)
208 gdbarch_print_registers_info (current_gdbarch, gdb_stdout,
209 - deprecated_selected_frame, regnum, fpregs);
210 + get_selected_frame (), regnum, fpregs);
214 @@ -1684,7 +1680,7 @@ registers_info (char *addr_exp, int fpre
215 if (gdbarch_register_reggroup_p (current_gdbarch, regnum,
217 gdbarch_print_registers_info (current_gdbarch,
218 - gdb_stdout, deprecated_selected_frame,
219 + gdb_stdout, get_selected_frame (),
223 @@ -1714,8 +1710,6 @@ print_vector_info (struct gdbarch *gdbar
225 if (!target_has_registers)
226 error ("The program has no registers now.");
227 - if (deprecated_selected_frame == NULL)
228 - error ("No selected frame.");
230 if (gdbarch_print_vector_info_p (gdbarch))
231 gdbarch_print_vector_info (gdbarch, file, frame, args);
232 @@ -1740,7 +1734,7 @@ print_vector_info (struct gdbarch *gdbar
234 vector_info (char *args, int from_tty)
236 - print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
237 + print_vector_info (current_gdbarch, gdb_stdout, get_selected_frame (), args);
241 @@ -1910,8 +1904,6 @@ print_float_info (struct gdbarch *gdbarc
243 if (!target_has_registers)
244 error ("The program has no registers now.");
245 - if (deprecated_selected_frame == NULL)
246 - error ("No selected frame.");
248 if (gdbarch_print_float_info_p (gdbarch))
249 gdbarch_print_float_info (gdbarch, file, frame, args);
250 @@ -1937,7 +1929,7 @@ No floating-point info available for thi
252 float_info (char *args, int from_tty)
254 - print_float_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args);
255 + print_float_info (current_gdbarch, gdb_stdout, get_selected_frame (), args);
259 Index: gdb-6.3/gdb/inflow.c
260 ===================================================================
261 --- gdb-6.3.orig/gdb/inflow.c 2004-08-11 05:00:57.000000000 -0400
262 +++ gdb-6.3/gdb/inflow.c 2004-11-09 22:58:37.488338883 -0500
263 @@ -591,10 +591,7 @@ kill_command (char *arg, int from_tty)
264 if (target_has_stack)
266 printf_filtered ("In %s,\n", target_longname);
267 - if (deprecated_selected_frame == NULL)
268 - fputs_filtered ("No selected stack frame.\n", gdb_stdout);
270 - print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
271 + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
273 bfd_cache_close_all ();
275 Index: gdb-6.3/gdb/infrun.c
276 ===================================================================
277 --- gdb-6.3.orig/gdb/infrun.c 2004-09-27 13:58:08.000000000 -0400
278 +++ gdb-6.3/gdb/infrun.c 2004-11-09 22:51:07.351240752 -0500
279 @@ -3485,7 +3485,7 @@ save_inferior_status (int restore_stack_
281 inf_status->registers = regcache_dup (current_regcache);
283 - inf_status->selected_frame_id = get_frame_id (deprecated_selected_frame);
284 + inf_status->selected_frame_id = get_frame_id (get_selected_frame ());
288 Index: gdb-6.3/gdb/mi/mi-main.c
289 ===================================================================
290 --- gdb-6.3.orig/gdb/mi/mi-main.c 2004-09-12 11:00:42.000000000 -0400
291 +++ gdb-6.3/gdb/mi/mi-main.c 2004-11-09 22:53:29.998389013 -0500
292 @@ -388,7 +388,7 @@ register_changed_p (int regnum)
294 char raw_buffer[MAX_REGISTER_SIZE];
296 - if (! frame_register_read (deprecated_selected_frame, regnum, raw_buffer))
297 + if (! frame_register_read (get_selected_frame (), regnum, raw_buffer))
300 if (memcmp (&old_regs[DEPRECATED_REGISTER_BYTE (regnum)], raw_buffer,
301 @@ -509,7 +509,7 @@ get_register (int regnum, int format)
305 - frame_register (deprecated_selected_frame, regnum, &optim, &lval, &addr,
306 + frame_register (get_selected_frame (), regnum, &optim, &lval, &addr,
310 Index: gdb-6.3/gdb/mn10300-tdep.c
311 ===================================================================
312 --- gdb-6.3.orig/gdb/mn10300-tdep.c 2004-08-02 22:02:22.000000000 -0400
313 +++ gdb-6.3/gdb/mn10300-tdep.c 2004-11-09 22:51:07.356239776 -0500
314 @@ -1154,7 +1154,7 @@ mn10300_print_register (const char *name
315 printf_filtered ("%s: ", name);
318 - if (!frame_register_read (deprecated_selected_frame, regnum, raw_buffer))
319 + if (!frame_register_read (get_selected_frame (), regnum, raw_buffer))
321 printf_filtered ("[invalid]");
323 Index: gdb-6.3/gdb/stack.c
324 ===================================================================
325 --- gdb-6.3.orig/gdb/stack.c 2004-08-02 20:57:26.000000000 -0400
326 +++ gdb-6.3/gdb/stack.c 2004-11-09 22:51:07.361238800 -0500
327 @@ -758,9 +758,7 @@ parse_frame_specification (char *frame_e
331 - if (deprecated_selected_frame == NULL)
332 - error ("No selected frame.");
333 - return deprecated_selected_frame;
334 + return get_selected_frame ();
338 @@ -902,10 +900,10 @@ frame_info (char *addr_exp, int from_tty
340 calling_frame_info = get_prev_frame (fi);
342 - if (!addr_exp && frame_relative_level (deprecated_selected_frame) >= 0)
343 + if (!addr_exp && frame_relative_level (get_selected_frame ()) >= 0)
345 printf_filtered ("Stack level %d, frame at ",
346 - frame_relative_level (deprecated_selected_frame));
347 + frame_relative_level (get_selected_frame ()));
348 print_address_numeric (get_frame_base (fi), 1, gdb_stdout);
349 printf_filtered (":\n");
351 @@ -1445,9 +1443,7 @@ print_frame_label_vars (struct frame_inf
353 locals_info (char *args, int from_tty)
355 - if (!deprecated_selected_frame)
356 - error ("No frame selected.");
357 - print_frame_local_vars (deprecated_selected_frame, 0, gdb_stdout);
358 + print_frame_local_vars (get_selected_frame (), 0, gdb_stdout);
362 @@ -1470,7 +1466,7 @@ catch_info (char *ignore, int from_tty)
363 if (!deprecated_selected_frame)
364 error ("No frame selected.");
366 - print_frame_label_vars (deprecated_selected_frame, 0, gdb_stdout);
367 + print_frame_label_vars (get_selected_frame (), 0, gdb_stdout);
371 @@ -1537,9 +1533,7 @@ print_frame_arg_vars (struct frame_info
373 args_info (char *ignore, int from_tty)
375 - if (!deprecated_selected_frame)
376 - error ("No frame selected.");
377 - print_frame_arg_vars (deprecated_selected_frame, gdb_stdout);
378 + print_frame_arg_vars (get_selected_frame (), gdb_stdout);
382 @@ -1724,7 +1718,7 @@ down_silently_base (char *count_exp)
383 if (target_has_stack == 0 || deprecated_selected_frame == 0)
386 - frame = find_relative_frame (deprecated_selected_frame, &count1);
387 + frame = find_relative_frame (get_selected_frame (), &count1);
388 if (count1 != 0 && count_exp == 0)
391 @@ -1944,7 +1938,7 @@ func_command (char *arg, int from_tty)
394 printf_filtered ("'%s' not within current stack frame.\n", arg);
395 - else if (fp != deprecated_selected_frame)
396 + else if (fp != get_selected_frame ())
397 select_and_print_frame (fp);
400 @@ -1965,7 +1959,7 @@ get_frame_language (void)
401 instruction of another function. So we rely on
402 get_frame_address_in_block(), it provides us with a PC which is
403 guaranteed to be inside the frame's code block. */
404 - s = find_pc_symtab (get_frame_address_in_block (deprecated_selected_frame));
405 + s = find_pc_symtab (get_frame_address_in_block (get_selected_frame ()));
409 Index: gdb-6.3/gdb/tui/tui-disasm.c
410 ===================================================================
411 --- gdb-6.3.orig/gdb/tui/tui-disasm.c 2004-02-24 20:10:01.000000000 -0500
412 +++ gdb-6.3/gdb/tui/tui-disasm.c 2004-11-09 22:51:07.370237044 -0500
413 @@ -382,7 +382,7 @@ tui_vertical_disassem_scroll (enum tui_s
415 content = (tui_win_content) TUI_DISASM_WIN->generic.content;
416 if (cursal.symtab == (struct symtab *) NULL)
417 - s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
418 + s = find_pc_symtab (get_frame_pc (get_selected_frame ()));
422 Index: gdb-6.3/gdb/tui/tui-source.c
423 ===================================================================
424 --- gdb-6.3.orig/gdb/tui/tui-source.c 2004-02-16 16:05:09.000000000 -0500
425 +++ gdb-6.3/gdb/tui/tui-source.c 2004-11-09 22:51:07.370237044 -0500
426 @@ -326,7 +326,7 @@ tui_vertical_source_scroll (enum tui_scr
427 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
429 if (cursal.symtab == (struct symtab *) NULL)
430 - s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
431 + s = find_pc_symtab (get_frame_pc (get_selected_frame ()));
435 Index: gdb-6.3/gdb/tui/tui-winsource.c
436 ===================================================================
437 --- gdb-6.3.orig/gdb/tui/tui-winsource.c 2004-02-16 16:05:09.000000000 -0500
438 +++ gdb-6.3/gdb/tui/tui-winsource.c 2004-11-09 22:51:07.371236848 -0500
439 @@ -311,7 +311,7 @@ tui_horizontal_source_scroll (struct tui
440 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
442 if (cursal.symtab == (struct symtab *) NULL)
443 - s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
444 + s = find_pc_symtab (get_frame_pc (get_selected_frame ()));
448 Index: gdb-6.3/gdb/valops.c
449 ===================================================================
450 --- gdb-6.3.orig/gdb/valops.c 2004-09-13 23:01:48.000000000 -0400
451 +++ gdb-6.3/gdb/valops.c 2004-11-09 22:51:07.374236263 -0500
452 @@ -2663,15 +2663,10 @@ value_of_local (const char *name, int co
456 - if (deprecated_selected_frame == 0)
459 - error ("no frame selected");
463 + if (!complain && deprecated_selected_frame == 0)
466 - func = get_frame_function (deprecated_selected_frame);
467 + func = get_frame_function (get_selected_frame ());
471 @@ -2700,7 +2695,7 @@ value_of_local (const char *name, int co
475 - ret = read_var_value (sym, deprecated_selected_frame);
476 + ret = read_var_value (sym, get_selected_frame ());
477 if (ret == 0 && complain)
478 error ("`%s' argument unreadable", name);
480 Index: gdb-6.3/gdb/varobj.c
481 ===================================================================
482 --- gdb-6.3.orig/gdb/varobj.c 2004-07-26 10:53:06.000000000 -0400
483 +++ gdb-6.3/gdb/varobj.c 2004-11-09 22:51:07.377235677 -0500
484 @@ -488,7 +488,7 @@ varobj_create (char *objname,
487 var->root->frame = get_frame_id (fi);
488 - old_fi = deprecated_selected_frame;
489 + old_fi = get_selected_frame ();
493 Index: gdb-6.3/gdb/testsuite/gdb.base/default.exp
494 ===================================================================
495 --- gdb-6.3.orig/gdb/testsuite/gdb.base/default.exp 2003-03-20 09:45:50.000000000 -0500
496 +++ gdb-6.3/gdb/testsuite/gdb.base/default.exp 2004-11-09 22:51:07.379235287 -0500
497 @@ -167,7 +167,7 @@ gdb_test "disable breakpoints" "" "disab
498 #test disable display
499 gdb_test "disable display" "" "disable display"
501 -gdb_test "disassemble" "No frame selected." "disassemble"
502 +gdb_test "disassemble" "No (frame selected|registers)." "disassemble"
504 gdb_test "display" "" "display"
506 @@ -229,9 +229,9 @@ gdb_expect {
509 #test frame "f" abbreviation
510 -gdb_test "f" "No stack." "frame \"f\" abbreviation"
511 +gdb_test "f" "No (stack|registers)." "frame \"f\" abbreviation"
513 -gdb_test "frame" "No stack." "frame"
514 +gdb_test "frame" "No (stack|registers)." "frame"
516 gdb_test "fg" "The program is not being run." "fg"
517 # FIXME: fg kills the udi connection
518 @@ -294,9 +294,9 @@ gdb_test "ignore" "Argument required .a
520 gdb_test "info address" "Argument required." "info address"
521 #test info all-registers
522 -gdb_test "info all-registers" "The program has no registers now." "info all-registers"
523 +gdb_test "info all-registers" "(The program has no registers now|No registers)." "info all-registers"
525 -gdb_test "info args" "No frame selected." "info args"
526 +gdb_test "info args" "No (frame selected|registers)." "info args"
527 #test info bogus-gdb-command
528 gdb_test "info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\". Try \"help info\".*" "info bogus-gdb-command"
529 #test info breakpoints
530 @@ -320,11 +320,11 @@ gdb_test "info frame" "No stack.|No sele
532 gdb_test "info files" "" "info files"
534 -gdb_test "info float" "The program has no registers now." "info float"
535 +gdb_test "info float" "(The program has no registers now|No registers)." "info float"
537 gdb_test "info functions" "All defined functions:" "info functions"
539 -gdb_test "info locals" "No frame selected." "info locals"
540 +gdb_test "info locals" "(No frame selected|No registers)." "info locals"
542 gdb_test "info program" "The program being debugged is not being run." "info program"
544 @@ -352,7 +352,7 @@ gdb_test "info types" "All defined types
546 gdb_test "info variables" "All defined variables:" "info variables"
548 -gdb_test "info vector" "The program has no registers now." "info vector"
549 +gdb_test "info vector" "(The program has no registers now|No registers)." "info vector"
551 gdb_test "info warranty" "NO WARRANTY(\[^\r\n\]*\[\r\n\])+ *11. *BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY(\[^\r\n\]*\[\r\n\])+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN(\[^\r\n\]*\[\r\n\])+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES(\[^\r\n\]*\[\r\n\])+PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED(\[^\r\n\]*\[\r\n\])+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF(\[^\r\n\]*\[\r\n\])+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS(\[^\r\n\]*\[\r\n\])+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE(\[^\r\n\]*\[\r\n\])+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,(\[^\r\n\]*\[\r\n\])+REPAIR OR CORRECTION.(\[^\r\n\]*\[\r\n\])+ *12. *IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING(\[^\r\n\]*\[\r\n\])+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR(\[^\r\n\]*\[\r\n\])+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,(\[^\r\n\]*\[\r\n\])+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING(\[^\r\n\]*\[\r\n\])+OUT OF THE USE OR INABILITY TO USE THE PROGRAM .INCLUDING BUT NOT LIMITED(\[^\r\n\]*\[\r\n\])+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY(\[^\r\n\]*\[\r\n\])+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER(\[^\r\n\]*\[\r\n\])+PROGRAMS., EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE(\[^\r\n\]*\[\r\n\])+POSSIBILITY OF SUCH DAMAGES.*" "info warranty"
552 #test info watchpoints