diff --git a/async-command-editing.diff b/async-command-editing.diff new file mode 100644 index 0000000..05be6c5 --- /dev/null +++ b/async-command-editing.diff @@ -0,0 +1,132 @@ +From nobody Sun Jun 24 18:21:49 2007 +From: Daniel Jacobowitz +Subject: Re: PATCH: PR tui/2173: Arrow keys no longer works in breakpoint command list +To: Nick Roberts , gdb-patches@sourceware.org +Date: Sun, 24 Jun 2007 11:47:00 -0400 +Mail-Followup-To: Nick Roberts , + gdb-patches@sourceware.org + +On Tue, Jun 05, 2007 at 09:27:00AM -0400, Daniel Jacobowitz wrote: +> On Wed, Jun 06, 2007 at 12:55:55AM +1200, Nick Roberts wrote: +> > > > This change breaks the behaviour of annotations with commands that span +> > > > multiple lines, like if, while, etc: +> > > +> > > Sorry, I didn't even know we had special annotations for this (and the +> > > testsuite must not cover it)... +> > +> > Here's a test for gdb.base/annota3.exp. I can do the same for +> > gdb.base/annota1.exp and gdb.cp/annota3.exp, if needed. +> +> Thanks. This is OK once we fix the problem. I haven't gotten back to +> you about that yet because I want to figure out what other issues were +> solved by the original patch - there were several. But I've been on +> vacation and I'm in a mad rush at home now, so it may be a bit longer. + +Nick, does this work for emacs? It fixes the testcase (which I +updated to fail and not time out for broken GDBs). + +-- +Daniel Jacobowitz +CodeSourcery + +2007-06-24 Daniel Jacobowitz + + * top.c (gdb_readline_wrapper_line): Call rl_callback_handler_remove. + (struct gdb_readline_wrapper_cleanup): Remove prompt_orig. + (gdb_readline_wrapper_cleanup): Do not reset the prompt. + (gdb_readline_wrapper): Do not save the prompt. Pass our prompt + to display_gdb_prompt. + +2007-06-24 Nick Roberts + Daniel Jacobowitz + + * gdb.base/annota3.exp: Test for if construct. + +Index: top.c +=================================================================== +RCS file: /cvs/src/src/gdb/top.c,v +retrieving revision 1.120 +diff -u -p -r1.120 top.c +--- top.c 29 Mar 2007 18:55:01 -0000 1.120 ++++ top.c 24 Jun 2007 15:42:02 -0000 +@@ -751,12 +751,16 @@ gdb_readline_wrapper_line (char *line) + /* Prevent operate-and-get-next from acting too early. */ + saved_after_char_processing_hook = after_char_processing_hook; + after_char_processing_hook = NULL; ++ ++ /* Prevent parts of the prompt from being redisplayed if annotations ++ are enabled, and readline's state getting out of sync. */ ++ if (async_command_editing_p) ++ rl_callback_handler_remove (); + } + + struct gdb_readline_wrapper_cleanup + { + void (*handler_orig) (char *); +- char *prompt_orig; + int already_prompted_orig; + }; + +@@ -766,7 +770,6 @@ gdb_readline_wrapper_cleanup (void *arg) + struct gdb_readline_wrapper_cleanup *cleanup = arg; + + rl_already_prompted = cleanup->already_prompted_orig; +- PROMPT (0) = cleanup->prompt_orig; + + gdb_assert (input_handler == gdb_readline_wrapper_line); + input_handler = cleanup->handler_orig; +@@ -790,14 +793,12 @@ gdb_readline_wrapper (char *prompt) + cleanup->handler_orig = input_handler; + input_handler = gdb_readline_wrapper_line; + +- cleanup->prompt_orig = get_prompt (); +- PROMPT (0) = prompt; + cleanup->already_prompted_orig = rl_already_prompted; + + back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup); + + /* Display our prompt and prevent double prompt display. */ +- display_gdb_prompt (NULL); ++ display_gdb_prompt (prompt); + rl_already_prompted = 1; + + if (after_char_processing_hook) +Index: testsuite/gdb.base/annota3.exp +=================================================================== +RCS file: /cvs/src/src/gdb/testsuite/gdb.base/annota3.exp,v +retrieving revision 1.12 +diff -u -p -r1.12 annota3.exp +--- testsuite/gdb.base/annota3.exp 9 Jan 2007 17:59:09 -0000 1.12 ++++ testsuite/gdb.base/annota3.exp 24 Jun 2007 15:42:02 -0000 +@@ -99,7 +99,29 @@ gdb_expect_list "annotation set at level + "set annotate 3" + } + +- ++# ++# if construct: ++# ++send_gdb "if 1\n" ++gdb_expect { ++ -re "^if 1\r\n\r\n\032\032post-prompt\r\n\r\n\032\032pre-commands\r\n >\r\n\032\032commands\r\n$" { ++ pass "start if construct" ++ } ++ -re ".*\032\032commands\r\n" { ++ fail "start if construct" ++ } ++ timeout { fail "start if construct (timeout)" } ++} ++send_gdb "end\n" ++gdb_expect { ++ -re "^end\r\n\r\n\032\032post-commands\r\n$gdb_prompt$" { ++ pass "end if construct" ++ } ++ -re ".*$gdb_prompt$" { ++ fail "end if construct" ++ } ++ timeout { fail "end if construct (timeout)" } ++} + # + # info break: + # + diff --git a/gdb.changes b/gdb.changes index f3be08c..029775c 100644 --- a/gdb.changes +++ b/gdb.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sun Jun 24 18:52:47 CEST 2007 - schwab@suse.de + +- Fix annotations for commands prompt. + ------------------------------------------------------------------- Thu Jun 21 12:37:56 CEST 2007 - schwab@suse.de diff --git a/gdb.spec b/gdb.spec index d040ac1..9c44f9f 100644 --- a/gdb.spec +++ b/gdb.spec @@ -24,7 +24,7 @@ Group: Development/Tools/Debuggers Autoreqprov: on PreReq: %{install_info_prereq} Version: 6.6.50.20070621 -Release: 1 +Release: 2 Summary: The GNU Debugger Source: gdb-%{version}-cvs.tar.bz2 Patch1: gdb-misc.patch @@ -39,6 +39,7 @@ Patch9: loader_break.diff Patch10: ppc-long-double.diff Patch11: elf-symtab-read.diff Patch12: find-pc-sect-line.diff +Patch13: async-command-editing.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -81,6 +82,9 @@ cd .. %patch10 %patch11 %patch12 +cd gdb +%patch13 +cd .. %build CFLAGS="$RPM_OPT_FLAGS" \ @@ -136,6 +140,8 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Sun Jun 24 2007 - schwab@suse.de +- Fix annotations for commands prompt. * Thu Jun 21 2007 - schwab@suse.de - Update to head of trunk. * Fri Jun 08 2007 - schwab@suse.de