diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2020-12-04 16:43:51 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-12-04 16:43:52 -0500 |
commit | 42a4fec513f11d4ff346f62fc0df3731ce9f7d59 (patch) | |
tree | 9f7c10404b81c3a7186f3b1552e7114af4922c1d /gdb/jit.c | |
parent | aafdfb4eddc3c58be24fe50a1e6543a4b9c8cbac (diff) | |
download | binutils-42a4fec513f11d4ff346f62fc0df3731ce9f7d59.zip binutils-42a4fec513f11d4ff346f62fc0df3731ce9f7d59.tar.gz binutils-42a4fec513f11d4ff346f62fc0df3731ce9f7d59.tar.bz2 |
gdb: add inferior_execd observable
I want to add another action (clearing displaced stepping state) that
happens when an inferior execs. I think it would be cleaner to have an
observer for this event, rather than have infrun know about each other
sub-component.
Replace the calls to solib_create_inferior_hook and
jit_inferior_created_hook in follow_exec by observers.
gdb/ChangeLog:
* observable.h (inferior_execd): Declare new observable.
* observable.c (inferior_execd): Declare new observable.
* infrun.c (follow_exec): Notify inferior_execd observer.
* jit.c (jit_inferior_created_hook): Make static.
(_initialize_jit): Register inferior_execd observer.
* jit.h (jit_inferior_created_hook): Remove declaration.
* solib.c (_initialize_solib): Register inferior_execd observer.
Change-Id: I000cce00094e23baa67df693d912646b6ae38e44
Diffstat (limited to 'gdb/jit.c')
-rw-r--r-- | gdb/jit.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -49,6 +49,7 @@ static const char jit_break_name[] = "__jit_debug_register_code"; static const char jit_descriptor_name[] = "__jit_debug_descriptor"; +static void jit_inferior_created_hook (inferior *inf); static void jit_inferior_exit_hook (struct inferior *inf); /* An unwinder is registered for every gdbarch. This key is used to @@ -1230,9 +1231,12 @@ jit_inferior_init (inferior *inf) } } -/* See jit.h. */ +/* Looks for the descriptor and registration symbols and breakpoints + the registration function. If it finds both, it registers all the + already JITed code. If it has already found the symbols, then it + doesn't try again. */ -void +static void jit_inferior_created_hook (inferior *inf) { jit_inferior_init (inf); @@ -1337,6 +1341,7 @@ _initialize_jit () &setdebuglist, &showdebuglist); gdb::observers::inferior_created.attach (jit_inferior_created_hook); + gdb::observers::inferior_execd.attach (jit_inferior_created_hook); gdb::observers::inferior_exit.attach (jit_inferior_exit_hook); gdb::observers::breakpoint_deleted.attach (jit_breakpoint_deleted); |