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.
This commit is contained in:
parent
1c88ceb1be
commit
5c65b58a58
8 changed files with 47 additions and 9 deletions
|
@ -1,3 +1,21 @@
|
|||
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.
|
||||
|
||||
2015-05-16 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* printcmd.c (struct format_data): Move it to valprint.h.
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -397,6 +397,7 @@ struct command_line
|
|||
struct
|
||||
{
|
||||
enum compile_i_scope_types scope;
|
||||
void *scope_data;
|
||||
}
|
||||
compile;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue