]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb: get jiter objfile from a bound minsym
authorMihails Strasuns <mihails.strasuns@intel.com>
Wed, 14 Oct 2020 08:44:36 +0000 (10:44 +0200)
committerMihails Strasuns <mihails.strasuns@intel.com>
Mon, 19 Oct 2020 14:46:44 +0000 (16:46 +0200)
commita606acc8d2ba8fae5b8d2e1cd9bad8a5d5f112bb
treefe46d16dce2b30c6062a961a7aebb0413d770082
parentaa873d83151865397ae419fd849bb97f26a2597a
gdb: get jiter objfile from a bound minsym

This fixes a regression introduced by the following commit:

fe053b9e853 gdb/jit: pass the jiter objfile as an argument to jit_event_handler

In the refactoring `handle_jit_event` function was changed to pass a matching
objfile pointer to the `jit_event_handler` explicitly, rather using internal
storage:

```
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -5448,8 +5448,9 @@ handle_jit_event (void)

   frame = get_current_frame ();
   gdbarch = get_frame_arch (frame);
+  objfile *jiter = symbol_objfile (get_frame_function (frame));

-  jit_event_handler (gdbarch);
+  jit_event_handler (gdbarch, jiter);
```

This was needed to add support for multiple jiters.  However it has also
introduced a regression, because `get_frame_function (frame)` here may
return `nullptr`, resulting in a crash.

A more resilient way would be to use an approach mirroring
`jit_breakpoint_re_set` - to find a minimal symbol matching the
breakpoint location and use its object file.  We know that this
breakpoint event comes from a breakpoint set by `jit_breakpoint_re_set`,
thus using the reverse approach should be reliable enough.

gdb/Changelog:
2020-10-14  Mihails Strasuns  <mihails.strasuns@intel.com>

* breakpoint.c (handle_jit_event): Add an argument, change how
`jit_event_handler` is called.
gdb/ChangeLog
gdb/breakpoint.c