From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27791 invoked by alias); 5 Sep 2013 17:00:00 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 27782 invoked by uid 89); 5 Sep 2013 16:59:59 -0000 Received: from mms2.broadcom.com (HELO mms2.broadcom.com) (216.31.210.18) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 05 Sep 2013 16:59:59 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,RDNS_NONE autolearn=no version=3.3.2 X-HELO: mms2.broadcom.com Received: from [10.9.208.57] by mms2.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Thu, 05 Sep 2013 09:53:30 -0700 X-Server-Uuid: 4500596E-606A-40F9-852D-14843D8201B2 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS08.corp.ad.broadcom.com (10.9.208.57) with Microsoft SMTP Server (TLS) id 14.1.438.0; Thu, 5 Sep 2013 09:59:49 -0700 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.1.438.0; Thu, 5 Sep 2013 09:59:49 -0700 Received: from [10.177.73.74] (unknown [10.177.73.74]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 609301A48 for ; Thu, 5 Sep 2013 09:59:49 -0700 (PDT) Message-ID: <5228B883.2010602@broadcom.com> Date: Thu, 05 Sep 2013 17:00:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: "gdb-patches@sourceware.org" Subject: [PATCH] Give every interpreter a command_loop_proc. Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2013-09/txt/msg00179.txt.bz2 This patch simplifies gdb/interps.c:current_interp_command_loop by giving every interpreter a command_loop_proc. Of the 4 interpreters I'm aware of mi and gdbtk already install a command loop proc, while cli and tui don't instead using fall-through code in current_interp_command_loop. I've given cli and tui a command loop proc, and removed the fall-through code. This change does rely on "current_interpreter" never being NULL, I believe this is true, and no tests failed here (x86-64 linux), but if anyone know different please let me know. OK to apply? Thanks, Andrew 2013-09-05 Andrew Burgess * gdb/cli/cli-interp.c (_initialize_cli_interp): Add a command_loop_proc to interp_procs. * gdb/event-top.c (cli_command_loop): Change signature to match interp_command_loop_ftype. * gdb/event-top.h (cli_command_loop): Same. * gdb/interps.c (interp_new): Require every interpreter to have a command_loop_proc. (current_interp_command_loop): Just call the command_loop_proc on the current interpreter. * gdb/tui/tui-interp.c (_initialize_tui_interp): Add a command_loop_proc to interp_procs. diff --git a/gdb/cli/cli-interp.c b/gdb/cli/cli-interp.c index 1003cc7..ac3d9a8 100644 --- a/gdb/cli/cli-interp.c +++ b/gdb/cli/cli-interp.c @@ -151,7 +151,9 @@ _initialize_cli_interp (void) cli_interpreter_suspend, /* suspend_proc */ cli_interpreter_exec, /* exec_proc */ cli_interpreter_display_prompt_p, /* prompt_proc_p */ - cli_ui_out /* ui_out_proc */ + cli_ui_out, /* ui_out_proc */ + NULL, /* set_logging_proc */ + cli_command_loop /* command_loop_proc */ }; struct interp *cli_interp; diff --git a/gdb/event-top.c b/gdb/event-top.c index f1d55b3..1f2e6fb 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -167,9 +167,11 @@ rl_callback_read_char_wrapper (gdb_client_data client_data) } /* Initialize all the necessary variables, start the event loop, - register readline, and stdin, start the loop. */ + register readline, and stdin, start the loop. The DATA is the + interpreter data cookie, ignored for now. */ + void -cli_command_loop (void) +cli_command_loop (void *data) { display_gdb_prompt (0); diff --git a/gdb/event-top.h b/gdb/event-top.h index e6166f6..97142d4 100644 --- a/gdb/event-top.h +++ b/gdb/event-top.h @@ -62,6 +62,6 @@ extern void (*input_handler) (char *); extern int input_fd; extern void (*after_char_processing_hook) (void); -extern void cli_command_loop (void); +extern void cli_command_loop (void *); #endif diff --git a/gdb/interps.c b/gdb/interps.c index 33e0f72..7f19385 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -101,6 +101,9 @@ interp_new (const char *name, const struct interp_procs *procs) new_interp->procs = procs; new_interp->inited = 0; + /* Check for required procs. */ + gdb_assert (procs->command_loop_proc != NULL); + return new_interp; } @@ -319,13 +322,9 @@ current_interp_display_prompt_p (void) void current_interp_command_loop (void) { - /* Somewhat messy. For the moment prop up all the old ways of - selecting the command loop. */ - if (current_interpreter != NULL - && current_interpreter->procs->command_loop_proc != NULL) - current_interpreter->procs->command_loop_proc (current_interpreter->data); - else - cli_command_loop (); + gdb_assert (current_interpreter != NULL); + + current_interpreter->procs->command_loop_proc (current_interpreter->data); } int diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c index 42526e6..1095220 100644 --- a/gdb/tui/tui-interp.c +++ b/gdb/tui/tui-interp.c @@ -153,6 +153,8 @@ _initialize_tui_interp (void) tui_exec, tui_display_prompt_p, tui_ui_out, + NULL, + cli_command_loop }; struct interp *tui_interp;