diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2015-05-16 14:27:47 +0200 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2015-05-16 14:28:10 +0200 |
commit | 5c65b58a58a4c77b1ec38b4e31549aaa090b4845 (patch) | |
tree | 3e129a27062b4f2edbeb6197964ae5341ac7deff /gdb/compile | |
parent | 1c88ceb1bedc81dbfd1d076e4a49bbf533b4e238 (diff) | |
download | gdb-5c65b58a58a4c77b1ec38b4e31549aaa090b4845.zip gdb-5c65b58a58a4c77b1ec38b4e31549aaa090b4845.tar.gz gdb-5c65b58a58a4c77b1ec38b4e31549aaa090b4845.tar.bz2 |
compile: Distribute scope, add scope_data
Provide a way to access current 'scope' during the do_module_cleanup stage and
associate more data with it.
gdb/ChangeLog
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
* cli/cli-script.c (execute_control_command): Update
eval_compile_command caller.
* compile/compile-object-load.c (compile_object_load): Add parameters
scope and scope_data. Set them.
* compile/compile-object-load.h (struct compile_module): Add fields
scope and scope_data.
(compile_object_load): Add parameters scope and scope_data.
* compile/compile-object-run.c (struct do_module_cleanup): Add fields
scope and scope_data.
(compile_object_run): Propagate the fields scope and scope_data.
* compile/compile.c (compile_file_command, compile_code_command):
Update eval_compile_command callers.
(eval_compile_command): Add parameter scope_data. Pass it plus scope.
* compile/compile.h (eval_compile_command): Add parameter scope_data.
* defs.h (struct command_line): Add field scope_data.
Diffstat (limited to 'gdb/compile')
-rw-r--r-- | gdb/compile/compile-object-load.c | 5 | ||||
-rw-r--r-- | gdb/compile/compile-object-load.h | 11 | ||||
-rw-r--r-- | gdb/compile/compile-object-run.c | 6 | ||||
-rw-r--r-- | gdb/compile/compile.c | 9 | ||||
-rw-r--r-- | gdb/compile/compile.h | 3 |
5 files changed, 26 insertions, 8 deletions
diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c index 745d787..fd440be 100644 --- a/gdb/compile/compile-object-load.c +++ b/gdb/compile/compile-object-load.c @@ -464,7 +464,8 @@ store_regs (struct type *regs_type, CORE_ADDR regs_base) function returns. */ struct compile_module * -compile_object_load (const char *object_file, const char *source_file) +compile_object_load (const char *object_file, const char *source_file, + enum compile_i_scope_types scope, void *scope_data) { struct cleanup *cleanups, *cleanups_free_objfile; bfd *abfd; @@ -597,5 +598,7 @@ compile_object_load (const char *object_file, const char *source_file) retval->source_file = xstrdup (source_file); retval->func_addr = func_addr; retval->regs_addr = regs_addr; + retval->scope = scope; + retval->scope_data = scope_data; return retval; } diff --git a/gdb/compile/compile-object-load.h b/gdb/compile/compile-object-load.h index bef575e..311fb09 100644 --- a/gdb/compile/compile-object-load.h +++ b/gdb/compile/compile-object-load.h @@ -31,9 +31,16 @@ struct compile_module /* Inferior registers address or NULL if the inferior function does not require any. */ CORE_ADDR regs_addr; + + /* The "scope" of this compilation. */ + enum compile_i_scope_types scope; + + /* User data for SCOPE in use. */ + void *scope_data; }; -extern struct compile_module *compile_object_load (const char *object_file, - const char *source_file); +extern struct compile_module *compile_object_load + (const char *object_file, const char *source_file, + enum compile_i_scope_types scope, void *scope_data); #endif /* GDB_COMPILE_OBJECT_LOAD_H */ diff --git a/gdb/compile/compile-object-run.c b/gdb/compile/compile-object-run.c index 422693b..c194705 100644 --- a/gdb/compile/compile-object-run.c +++ b/gdb/compile/compile-object-run.c @@ -36,6 +36,10 @@ struct do_module_cleanup /* .c file OBJFILE was built from. It needs to be xfree-d. */ char *source_file; + /* Copy from struct compile_module. */ + enum compile_i_scope_types scope; + void *scope_data; + /* objfile_name of our objfile. */ char objfile_name_string[1]; }; @@ -96,6 +100,8 @@ 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 = module->scope; + 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 5ede27b..621de66 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, ""); @@ -560,7 +560,7 @@ compile_command (char *args, int from_tty) void eval_compile_command (struct command_line *cmd, const char *cmd_string, - enum compile_i_scope_types scope) + enum compile_i_scope_types scope, void *scope_data) { char *object_file, *source_file; @@ -574,7 +574,8 @@ eval_compile_command (struct command_line *cmd, const char *cmd_string, make_cleanup (xfree, source_file); cleanup_unlink = make_cleanup (cleanup_unlink_file, object_file); make_cleanup (cleanup_unlink_file, source_file); - compile_module = compile_object_load (object_file, source_file); + compile_module = compile_object_load (object_file, source_file, + scope, scope_data); discard_cleanups (cleanup_unlink); do_cleanups (cleanup_xfree); compile_object_run (compile_module); diff --git a/gdb/compile/compile.h b/gdb/compile/compile.h index ccb1361..a973167 100644 --- a/gdb/compile/compile.h +++ b/gdb/compile/compile.h @@ -30,7 +30,8 @@ struct dynamic_prop; extern void eval_compile_command (struct command_line *cmd, const 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. |