From patchwork Thu Mar 26 20:57:38 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 5838 Received: (qmail 19738 invoked by alias); 26 Mar 2015 20:57:43 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 19684 invoked by uid 89); 26 Mar 2015 20:57:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.9 required=5.0 tests=AWL, BAYES_00, SPF_HELO_PASS, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 26 Mar 2015 20:57:41 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 0D85CB0409 for ; Thu, 26 Mar 2015 20:57:40 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-116-21.ams2.redhat.com [10.36.116.21]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t2QKvcfq007921; Thu, 26 Mar 2015 16:57:38 -0400 Subject: [PATCH 2/4] compile: Add new field scope_data From: Jan Kratochvil To: gdb-patches@sourceware.org Cc: Phil Muldoon Date: Thu, 26 Mar 2015 21:57:38 +0100 Message-ID: <20150326205737.28223.24573.stgit@host1.jankratochvil.net> In-Reply-To: <20150326205727.28223.54648.stgit@host1.jankratochvil.net> References: <20150326205727.28223.54648.stgit@host1.jankratochvil.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-IsSubscribed: yes Provide a way to associate more data with enum compile_i_scope_types up to the struct do_module_cleanup stage. It should be all sub-classed but AFAIK GDB does not require C++ compiler yet. gdb/ChangeLog 2015-03-26 Jan Kratochvil * cli/cli-script.c (execute_control_command): Update eval_compile_command caller. * compile/compile-object-load.h (struct compile_module): Add field scope_data. * compile/compile-object-run.c (struct do_module_cleanup): Add field scope_data. (compile_object_run): Propage the field scope_data. * compile/compile.c (compile_file_command, compile_code_command): Update eval_compile_command callers. (eval_compile_command): Add parameter scope_data. Set it. * compile/compile.h (eval_compile_command): Add parameter scope_data. * defs.h (struct command_line): Add field scope_data. --- gdb/cli/cli-script.c | 3 ++- gdb/compile/compile-object-load.h | 3 +++ gdb/compile/compile-object-run.c | 4 ++++ gdb/compile/compile.c | 7 ++++--- gdb/compile/compile.h | 3 ++- gdb/defs.h | 1 + 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 7a4ed78..4bd18a7 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -615,7 +615,8 @@ execute_control_command (struct command_line *cmd) } case compile_control: - eval_compile_command (cmd, NULL, cmd->control_u.compile.scope); + eval_compile_command (cmd, NULL, cmd->control_u.compile.scope, + cmd->control_u.compile.scope_data); ret = simple_control; break; diff --git a/gdb/compile/compile-object-load.h b/gdb/compile/compile-object-load.h index bef575e..ed3ac3a 100644 --- a/gdb/compile/compile-object-load.h +++ b/gdb/compile/compile-object-load.h @@ -31,6 +31,9 @@ struct compile_module /* Inferior registers address or NULL if the inferior function does not require any. */ CORE_ADDR regs_addr; + + /* User data for enum compile_i_scope_types in use. */ + void *scope_data; }; extern struct compile_module *compile_object_load (const char *object_file, diff --git a/gdb/compile/compile-object-run.c b/gdb/compile/compile-object-run.c index 6738aad..0864712 100644 --- a/gdb/compile/compile-object-run.c +++ b/gdb/compile/compile-object-run.c @@ -36,6 +36,9 @@ struct do_module_cleanup /* .c file OBJFILE was built from. It needs to be xfree-d. */ char *source_file; + /* User data for enum compile_i_scope_types in use. */ + void *scope_data; + /* objfile_name of our objfile. */ char objfile_name_string[1]; }; @@ -96,6 +99,7 @@ compile_object_run (struct compile_module *module) data->executedp = &executed; data->source_file = xstrdup (module->source_file); strcpy (data->objfile_name_string, objfile_name_s); + data->scope_data = module->scope_data; xfree (module->source_file); xfree (module); diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index 1d342a0..7fe556d 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -117,7 +117,7 @@ compile_file_command (char *arg, int from_tty) make_cleanup (xfree, arg); buffer = xstrprintf ("#include \"%s\"\n", arg); make_cleanup (xfree, buffer); - eval_compile_command (NULL, buffer, scope); + eval_compile_command (NULL, buffer, scope, NULL); do_cleanups (cleanup); } @@ -150,7 +150,7 @@ compile_code_command (char *arg, int from_tty) } if (arg && *arg) - eval_compile_command (NULL, arg, scope); + eval_compile_command (NULL, arg, scope, NULL); else { struct command_line *l = get_command_line (compile_control, ""); @@ -555,7 +555,7 @@ compile_command (char *args, int from_tty) void eval_compile_command (struct command_line *cmd, char *cmd_string, - enum compile_i_scope_types scope) + enum compile_i_scope_types scope, void *scope_data) { char *object_file, *source_file; @@ -572,6 +572,7 @@ eval_compile_command (struct command_line *cmd, char *cmd_string, compile_module = compile_object_load (object_file, source_file); discard_cleanups (cleanup_unlink); do_cleanups (cleanup_xfree); + compile_module->scope_data = scope_data; compile_object_run (compile_module); } } diff --git a/gdb/compile/compile.h b/gdb/compile/compile.h index 1e3f934..93c4786 100644 --- a/gdb/compile/compile.h +++ b/gdb/compile/compile.h @@ -29,7 +29,8 @@ struct dynamic_prop; never both. */ extern void eval_compile_command (struct command_line *cmd, char *cmd_string, - enum compile_i_scope_types scope); + enum compile_i_scope_types scope, + void *scope_data); /* Compile a DWARF location expression to C, suitable for use by the compiler. diff --git a/gdb/defs.h b/gdb/defs.h index 72512f6..6476f80 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -400,6 +400,7 @@ struct command_line struct { enum compile_i_scope_types scope; + void *scope_data; } compile; }