gcore, target: allow target to prepare/cleanup for/after core file generation

Add new target functions to_prepare_to_generate_core and
to_done_generating_core that are called before and after generating a core
file, respectively.

This allows targets to prepare for core file generation and to clean up
afterwards.

gdb/
	* target.h (target_ops) <to_prepare_to_generate_core>
	<to_done_generating_core>: New.
	(target_prepare_to_generate_core, target_done_generating_core): New.
	* target.c (target_prepare_to_generate_core)
	(target_done_generating_core): New.
	* target-delegates.c: Regenerate.
	* gcore.c: (write_gcore_file): Rename to ...
	(write_gcore_file_1): ...this.
	(write_gcore_file): Call target_prepare_to_generate_core
	and target_done_generating_core.
This commit is contained in:
Markus Metzger
2014-05-20 15:22:53 +02:00
parent 1d1f1ccb33
commit 5fff78c4e0
5 changed files with 95 additions and 5 deletions

View File

@@ -1624,6 +1624,30 @@ delegate_decr_pc_after_break (struct target_ops *self, struct gdbarch *arg1)
return self->to_decr_pc_after_break (self, arg1);
}
static void
delegate_prepare_to_generate_core (struct target_ops *self)
{
self = self->beneath;
self->to_prepare_to_generate_core (self);
}
static void
tdefault_prepare_to_generate_core (struct target_ops *self)
{
}
static void
delegate_done_generating_core (struct target_ops *self)
{
self = self->beneath;
self->to_done_generating_core (self);
}
static void
tdefault_done_generating_core (struct target_ops *self)
{
}
static void
install_delegators (struct target_ops *ops)
{
@@ -1897,6 +1921,10 @@ install_delegators (struct target_ops *ops)
ops->to_get_tailcall_unwinder = delegate_get_tailcall_unwinder;
if (ops->to_decr_pc_after_break == NULL)
ops->to_decr_pc_after_break = delegate_decr_pc_after_break;
if (ops->to_prepare_to_generate_core == NULL)
ops->to_prepare_to_generate_core = delegate_prepare_to_generate_core;
if (ops->to_done_generating_core == NULL)
ops->to_done_generating_core = delegate_done_generating_core;
}
static void
@@ -2037,4 +2065,6 @@ install_dummy_methods (struct target_ops *ops)
ops->to_get_unwinder = tdefault_get_unwinder;
ops->to_get_tailcall_unwinder = tdefault_get_tailcall_unwinder;
ops->to_decr_pc_after_break = default_target_decr_pc_after_break;
ops->to_prepare_to_generate_core = tdefault_prepare_to_generate_core;
ops->to_done_generating_core = tdefault_done_generating_core;
}