Use gdb_byte for bytes from the program being debugged.
[platform/upstream/binutils.git] / gdb / jit.c
1 /* Handle JIT code generation in the inferior for GDB, the GNU Debugger.
2
3    Copyright (C) 2009-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21
22 #include "jit.h"
23 #include "jit-reader.h"
24 #include "block.h"
25 #include "breakpoint.h"
26 #include "command.h"
27 #include "dictionary.h"
28 #include "filenames.h"
29 #include "frame-unwind.h"
30 #include "gdbcmd.h"
31 #include "gdbcore.h"
32 #include "inferior.h"
33 #include "observer.h"
34 #include "objfiles.h"
35 #include "regcache.h"
36 #include "symfile.h"
37 #include "symtab.h"
38 #include "target.h"
39 #include "gdb-dlfcn.h"
40 #include "gdb_stat.h"
41 #include "exceptions.h"
42 #include "gdb_bfd.h"
43
44 static const char *jit_reader_dir = NULL;
45
46 static const struct objfile_data *jit_objfile_data;
47
48 static const char *const jit_break_name = "__jit_debug_register_code";
49
50 static const char *const jit_descriptor_name = "__jit_debug_descriptor";
51
52 static const struct program_space_data *jit_program_space_data = NULL;
53
54 static void jit_inferior_init (struct gdbarch *gdbarch);
55
56 /* An unwinder is registered for every gdbarch.  This key is used to
57    remember if the unwinder has been registered for a particular
58    gdbarch.  */
59
60 static struct gdbarch_data *jit_gdbarch_data;
61
62 /* Non-zero if we want to see trace of jit level stuff.  */
63
64 static unsigned int jit_debug = 0;
65
66 static void
67 show_jit_debug (struct ui_file *file, int from_tty,
68                 struct cmd_list_element *c, const char *value)
69 {
70   fprintf_filtered (file, _("JIT debugging is %s.\n"), value);
71 }
72
73 struct target_buffer
74 {
75   CORE_ADDR base;
76   ULONGEST size;
77 };
78
79 /* Openning the file is a no-op.  */
80
81 static void *
82 mem_bfd_iovec_open (struct bfd *abfd, void *open_closure)
83 {
84   return open_closure;
85 }
86
87 /* Closing the file is just freeing the base/size pair on our side.  */
88
89 static int
90 mem_bfd_iovec_close (struct bfd *abfd, void *stream)
91 {
92   xfree (stream);
93   return 1;
94 }
95
96 /* For reading the file, we just need to pass through to target_read_memory and
97    fix up the arguments and return values.  */
98
99 static file_ptr
100 mem_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf,
101                      file_ptr nbytes, file_ptr offset)
102 {
103   int err;
104   struct target_buffer *buffer = (struct target_buffer *) stream;
105
106   /* If this read will read all of the file, limit it to just the rest.  */
107   if (offset + nbytes > buffer->size)
108     nbytes = buffer->size - offset;
109
110   /* If there are no more bytes left, we've reached EOF.  */
111   if (nbytes == 0)
112     return 0;
113
114   err = target_read_memory (buffer->base + offset, (gdb_byte *) buf, nbytes);
115   if (err)
116     return -1;
117
118   return nbytes;
119 }
120
121 /* For statting the file, we only support the st_size attribute.  */
122
123 static int
124 mem_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb)
125 {
126   struct target_buffer *buffer = (struct target_buffer*) stream;
127
128   sb->st_size = buffer->size;
129   return 0;
130 }
131
132 /* Open a BFD from the target's memory.  */
133
134 static struct bfd *
135 bfd_open_from_target_memory (CORE_ADDR addr, ULONGEST size, char *target)
136 {
137   struct target_buffer *buffer = xmalloc (sizeof (struct target_buffer));
138
139   buffer->base = addr;
140   buffer->size = size;
141   return gdb_bfd_openr_iovec ("<in-memory>", target,
142                               mem_bfd_iovec_open,
143                               buffer,
144                               mem_bfd_iovec_pread,
145                               mem_bfd_iovec_close,
146                               mem_bfd_iovec_stat);
147 }
148
149 /* One reader that has been loaded successfully, and can potentially be used to
150    parse debug info.  */
151
152 static struct jit_reader
153 {
154   struct gdb_reader_funcs *functions;
155   void *handle;
156 } *loaded_jit_reader = NULL;
157
158 typedef struct gdb_reader_funcs * (reader_init_fn_type) (void);
159 static const char *reader_init_fn_sym = "gdb_init_reader";
160
161 /* Try to load FILE_NAME as a JIT debug info reader.  */
162
163 static struct jit_reader *
164 jit_reader_load (const char *file_name)
165 {
166   void *so;
167   reader_init_fn_type *init_fn;
168   struct jit_reader *new_reader = NULL;
169   struct gdb_reader_funcs *funcs = NULL;
170   struct cleanup *old_cleanups;
171
172   if (jit_debug)
173     fprintf_unfiltered (gdb_stdlog, _("Opening shared object %s.\n"),
174                         file_name);
175   so = gdb_dlopen (file_name);
176   old_cleanups = make_cleanup_dlclose (so);
177
178   init_fn = gdb_dlsym (so, reader_init_fn_sym);
179   if (!init_fn)
180     error (_("Could not locate initialization function: %s."),
181           reader_init_fn_sym);
182
183   if (gdb_dlsym (so, "plugin_is_GPL_compatible") == NULL)
184     error (_("Reader not GPL compatible."));
185
186   funcs = init_fn ();
187   if (funcs->reader_version != GDB_READER_INTERFACE_VERSION)
188     error (_("Reader version does not match GDB version."));
189
190   new_reader = XZALLOC (struct jit_reader);
191   new_reader->functions = funcs;
192   new_reader->handle = so;
193
194   discard_cleanups (old_cleanups);
195   return new_reader;
196 }
197
198 /* Provides the jit-reader-load command.  */
199
200 static void
201 jit_reader_load_command (char *args, int from_tty)
202 {
203   char *so_name;
204   struct cleanup *prev_cleanup;
205
206   if (args == NULL)
207     error (_("No reader name provided."));
208
209   if (loaded_jit_reader != NULL)
210     error (_("JIT reader already loaded.  Run jit-reader-unload first."));
211
212   if (IS_ABSOLUTE_PATH (args))
213     so_name = xstrdup (args);
214   else
215     so_name = xstrprintf ("%s%s%s", SLASH_STRING, jit_reader_dir, args);
216   prev_cleanup = make_cleanup (xfree, so_name);
217
218   loaded_jit_reader = jit_reader_load (so_name);
219   do_cleanups (prev_cleanup);
220 }
221
222 /* Provides the jit-reader-unload command.  */
223
224 static void
225 jit_reader_unload_command (char *args, int from_tty)
226 {
227   if (!loaded_jit_reader)
228     error (_("No JIT reader loaded."));
229
230   loaded_jit_reader->functions->destroy (loaded_jit_reader->functions);
231
232   gdb_dlclose (loaded_jit_reader->handle);
233   xfree (loaded_jit_reader);
234   loaded_jit_reader = NULL;
235 }
236
237 /* Per-program space structure recording which objfile has the JIT
238    symbols.  */
239
240 struct jit_program_space_data
241 {
242   /* The objfile.  This is NULL if no objfile holds the JIT
243      symbols.  */
244
245   struct objfile *objfile;
246
247   /* If this program space has __jit_debug_register_code, this is the
248      cached address from the minimal symbol.  This is used to detect
249      relocations requiring the breakpoint to be re-created.  */
250
251   CORE_ADDR cached_code_address;
252
253   /* This is the JIT event breakpoint, or NULL if it has not been
254      set.  */
255
256   struct breakpoint *jit_breakpoint;
257 };
258
259 /* Per-objfile structure recording the addresses in the program space.
260    This object serves two purposes: for ordinary objfiles, it may
261    cache some symbols related to the JIT interface; and for
262    JIT-created objfiles, it holds some information about the
263    jit_code_entry.  */
264
265 struct jit_objfile_data
266 {
267   /* Symbol for __jit_debug_register_code.  */
268   struct minimal_symbol *register_code;
269
270   /* Symbol for __jit_debug_descriptor.  */
271   struct minimal_symbol *descriptor;
272
273   /* Address of struct jit_code_entry in this objfile.  This is only
274      non-zero for objfiles that represent code created by the JIT.  */
275   CORE_ADDR addr;
276 };
277
278 /* Fetch the jit_objfile_data associated with OBJF.  If no data exists
279    yet, make a new structure and attach it.  */
280
281 static struct jit_objfile_data *
282 get_jit_objfile_data (struct objfile *objf)
283 {
284   struct jit_objfile_data *objf_data;
285
286   objf_data = objfile_data (objf, jit_objfile_data);
287   if (objf_data == NULL)
288     {
289       objf_data = XZALLOC (struct jit_objfile_data);
290       set_objfile_data (objf, jit_objfile_data, objf_data);
291     }
292
293   return objf_data;
294 }
295
296 /* Remember OBJFILE has been created for struct jit_code_entry located
297    at inferior address ENTRY.  */
298
299 static void
300 add_objfile_entry (struct objfile *objfile, CORE_ADDR entry)
301 {
302   struct jit_objfile_data *objf_data;
303
304   objf_data = get_jit_objfile_data (objfile);
305   objf_data->addr = entry;
306 }
307
308 /* Return jit_program_space_data for current program space.  Allocate
309    if not already present.  */
310
311 static struct jit_program_space_data *
312 get_jit_program_space_data (void)
313 {
314   struct jit_program_space_data *ps_data;
315
316   ps_data = program_space_data (current_program_space, jit_program_space_data);
317   if (ps_data == NULL)
318     {
319       ps_data = XZALLOC (struct jit_program_space_data);
320       set_program_space_data (current_program_space, jit_program_space_data,
321                               ps_data);
322     }
323
324   return ps_data;
325 }
326
327 static void
328 jit_program_space_data_cleanup (struct program_space *ps, void *arg)
329 {
330   xfree (arg);
331 }
332
333 /* Helper function for reading the global JIT descriptor from remote
334    memory.  Returns 1 if all went well, 0 otherwise.  */
335
336 static int
337 jit_read_descriptor (struct gdbarch *gdbarch,
338                      struct jit_descriptor *descriptor,
339                      struct jit_program_space_data *ps_data)
340 {
341   int err;
342   struct type *ptr_type;
343   int ptr_size;
344   int desc_size;
345   gdb_byte *desc_buf;
346   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
347   struct jit_objfile_data *objf_data;
348
349   if (ps_data->objfile == NULL)
350     return 0;
351   objf_data = get_jit_objfile_data (ps_data->objfile);
352   if (objf_data->descriptor == NULL)
353     return 0;
354
355   if (jit_debug)
356     fprintf_unfiltered (gdb_stdlog,
357                         "jit_read_descriptor, descriptor_addr = %s\n",
358                         paddress (gdbarch, SYMBOL_VALUE_ADDRESS (objf_data->descriptor)));
359
360   /* Figure out how big the descriptor is on the remote and how to read it.  */
361   ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
362   ptr_size = TYPE_LENGTH (ptr_type);
363   desc_size = 8 + 2 * ptr_size;  /* Two 32-bit ints and two pointers.  */
364   desc_buf = alloca (desc_size);
365
366   /* Read the descriptor.  */
367   err = target_read_memory (SYMBOL_VALUE_ADDRESS (objf_data->descriptor),
368                             desc_buf, desc_size);
369   if (err)
370     {
371       printf_unfiltered (_("Unable to read JIT descriptor from "
372                            "remote memory\n"));
373       return 0;
374     }
375
376   /* Fix the endianness to match the host.  */
377   descriptor->version = extract_unsigned_integer (&desc_buf[0], 4, byte_order);
378   descriptor->action_flag =
379       extract_unsigned_integer (&desc_buf[4], 4, byte_order);
380   descriptor->relevant_entry = extract_typed_address (&desc_buf[8], ptr_type);
381   descriptor->first_entry =
382       extract_typed_address (&desc_buf[8 + ptr_size], ptr_type);
383
384   return 1;
385 }
386
387 /* Helper function for reading a JITed code entry from remote memory.  */
388
389 static void
390 jit_read_code_entry (struct gdbarch *gdbarch,
391                      CORE_ADDR code_addr, struct jit_code_entry *code_entry)
392 {
393   int err, off;
394   struct type *ptr_type;
395   int ptr_size;
396   int entry_size;
397   int align_bytes;
398   gdb_byte *entry_buf;
399   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
400
401   /* Figure out how big the entry is on the remote and how to read it.  */
402   ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
403   ptr_size = TYPE_LENGTH (ptr_type);
404
405   /* Figure out where the longlong value will be.  */
406   align_bytes = gdbarch_long_long_align_bit (gdbarch) / 8;
407   off = 3 * ptr_size;
408   off = (off + (align_bytes - 1)) & ~(align_bytes - 1);
409
410   entry_size = off + 8;  /* Three pointers and one 64-bit int.  */
411   entry_buf = alloca (entry_size);
412
413   /* Read the entry.  */
414   err = target_read_memory (code_addr, entry_buf, entry_size);
415   if (err)
416     error (_("Unable to read JIT code entry from remote memory!"));
417
418   /* Fix the endianness to match the host.  */
419   ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
420   code_entry->next_entry = extract_typed_address (&entry_buf[0], ptr_type);
421   code_entry->prev_entry =
422       extract_typed_address (&entry_buf[ptr_size], ptr_type);
423   code_entry->symfile_addr =
424       extract_typed_address (&entry_buf[2 * ptr_size], ptr_type);
425   code_entry->symfile_size =
426       extract_unsigned_integer (&entry_buf[off], 8, byte_order);
427 }
428
429 /* Proxy object for building a block.  */
430
431 struct gdb_block
432 {
433   /* gdb_blocks are linked into a tree structure.  Next points to the
434      next node at the same depth as this block and parent to the
435      parent gdb_block.  */
436   struct gdb_block *next, *parent;
437
438   /* Points to the "real" block that is being built out of this
439      instance.  This block will be added to a blockvector, which will
440      then be added to a symtab.  */
441   struct block *real_block;
442
443   /* The first and last code address corresponding to this block.  */
444   CORE_ADDR begin, end;
445
446   /* The name of this block (if any).  If this is non-NULL, the
447      FUNCTION symbol symbol is set to this value.  */
448   const char *name;
449 };
450
451 /* Proxy object for building a symtab.  */
452
453 struct gdb_symtab
454 {
455   /* The list of blocks in this symtab.  These will eventually be
456      converted to real blocks.  */
457   struct gdb_block *blocks;
458
459   /* The number of blocks inserted.  */
460   int nblocks;
461
462   /* A mapping between line numbers to PC.  */
463   struct linetable *linetable;
464
465   /* The source file for this symtab.  */
466   const char *file_name;
467   struct gdb_symtab *next;
468 };
469
470 /* Proxy object for building an object.  */
471
472 struct gdb_object
473 {
474   struct gdb_symtab *symtabs;
475 };
476
477 /* The type of the `private' data passed around by the callback
478    functions.  */
479
480 typedef CORE_ADDR jit_dbg_reader_data;
481
482 /* The reader calls into this function to read data off the targets
483    address space.  */
484
485 static enum gdb_status
486 jit_target_read_impl (GDB_CORE_ADDR target_mem, void *gdb_buf, int len)
487 {
488   int result = target_read_memory ((CORE_ADDR) target_mem, gdb_buf, len);
489   if (result == 0)
490     return GDB_SUCCESS;
491   else
492     return GDB_FAIL;
493 }
494
495 /* The reader calls into this function to create a new gdb_object
496    which it can then pass around to the other callbacks.  Right now,
497    all that is required is allocating the memory.  */
498
499 static struct gdb_object *
500 jit_object_open_impl (struct gdb_symbol_callbacks *cb)
501 {
502   /* CB is not required right now, but sometime in the future we might
503      need a handle to it, and we'd like to do that without breaking
504      the ABI.  */
505   return XZALLOC (struct gdb_object);
506 }
507
508 /* Readers call into this function to open a new gdb_symtab, which,
509    again, is passed around to other callbacks.  */
510
511 static struct gdb_symtab *
512 jit_symtab_open_impl (struct gdb_symbol_callbacks *cb,
513                       struct gdb_object *object,
514                       const char *file_name)
515 {
516   struct gdb_symtab *ret;
517
518   /* CB stays unused.  See comment in jit_object_open_impl.  */
519
520   ret = XZALLOC (struct gdb_symtab);
521   ret->file_name = file_name ? xstrdup (file_name) : xstrdup ("");
522   ret->next = object->symtabs;
523   object->symtabs = ret;
524   return ret;
525 }
526
527 /* Returns true if the block corresponding to old should be placed
528    before the block corresponding to new in the final blockvector.  */
529
530 static int
531 compare_block (const struct gdb_block *const old,
532                const struct gdb_block *const new)
533 {
534   if (old == NULL)
535     return 1;
536   if (old->begin < new->begin)
537     return 1;
538   else if (old->begin == new->begin)
539     {
540       if (old->end > new->end)
541         return 1;
542       else
543         return 0;
544     }
545   else
546     return 0;
547 }
548
549 /* Called by readers to open a new gdb_block.  This function also
550    inserts the new gdb_block in the correct place in the corresponding
551    gdb_symtab.  */
552
553 static struct gdb_block *
554 jit_block_open_impl (struct gdb_symbol_callbacks *cb,
555                      struct gdb_symtab *symtab, struct gdb_block *parent,
556                      GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
557 {
558   struct gdb_block *block = XZALLOC (struct gdb_block);
559
560   block->next = symtab->blocks;
561   block->begin = (CORE_ADDR) begin;
562   block->end = (CORE_ADDR) end;
563   block->name = name ? xstrdup (name) : NULL;
564   block->parent = parent;
565
566   /* Ensure that the blocks are inserted in the correct (reverse of
567      the order expected by blockvector).  */
568   if (compare_block (symtab->blocks, block))
569     {
570       symtab->blocks = block;
571     }
572   else
573     {
574       struct gdb_block *i = symtab->blocks;
575
576       for (;; i = i->next)
577         {
578           /* Guaranteed to terminate, since compare_block (NULL, _)
579              returns 1.  */
580           if (compare_block (i->next, block))
581             {
582               block->next = i->next;
583               i->next = block;
584               break;
585             }
586         }
587     }
588   symtab->nblocks++;
589
590   return block;
591 }
592
593 /* Readers call this to add a line mapping (from PC to line number) to
594    a gdb_symtab.  */
595
596 static void
597 jit_symtab_line_mapping_add_impl (struct gdb_symbol_callbacks *cb,
598                                   struct gdb_symtab *stab, int nlines,
599                                   struct gdb_line_mapping *map)
600 {
601   int i;
602
603   if (nlines < 1)
604     return;
605
606   stab->linetable = xmalloc (sizeof (struct linetable)
607                              + (nlines - 1) * sizeof (struct linetable_entry));
608   stab->linetable->nitems = nlines;
609   for (i = 0; i < nlines; i++)
610     {
611       stab->linetable->item[i].pc = (CORE_ADDR) map[i].pc;
612       stab->linetable->item[i].line = map[i].line;
613     }
614 }
615
616 /* Called by readers to close a gdb_symtab.  Does not need to do
617    anything as of now.  */
618
619 static void
620 jit_symtab_close_impl (struct gdb_symbol_callbacks *cb,
621                        struct gdb_symtab *stab)
622 {
623   /* Right now nothing needs to be done here.  We may need to do some
624      cleanup here in the future (again, without breaking the plugin
625      ABI).  */
626 }
627
628 /* Transform STAB to a proper symtab, and add it it OBJFILE.  */
629
630 static void
631 finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
632 {
633   struct symtab *symtab;
634   struct gdb_block *gdb_block_iter, *gdb_block_iter_tmp;
635   struct block *block_iter;
636   int actual_nblocks, i, blockvector_size;
637   CORE_ADDR begin, end;
638
639   actual_nblocks = FIRST_LOCAL_BLOCK + stab->nblocks;
640
641   symtab = allocate_symtab (stab->file_name, objfile);
642   /* JIT compilers compile in memory.  */
643   symtab->dirname = NULL;
644
645   /* Copy over the linetable entry if one was provided.  */
646   if (stab->linetable)
647     {
648       int size = ((stab->linetable->nitems - 1)
649                   * sizeof (struct linetable_entry)
650                   + sizeof (struct linetable));
651       LINETABLE (symtab) = obstack_alloc (&objfile->objfile_obstack, size);
652       memcpy (LINETABLE (symtab), stab->linetable, size);
653     }
654   else
655     {
656       LINETABLE (symtab) = NULL;
657     }
658
659   blockvector_size = (sizeof (struct blockvector)
660                       + (actual_nblocks - 1) * sizeof (struct block *));
661   symtab->blockvector = obstack_alloc (&objfile->objfile_obstack,
662                                        blockvector_size);
663
664   /* (begin, end) will contain the PC range this entire blockvector
665      spans.  */
666   symtab->primary = 1;
667   BLOCKVECTOR_MAP (symtab->blockvector) = NULL;
668   begin = stab->blocks->begin;
669   end = stab->blocks->end;
670   BLOCKVECTOR_NBLOCKS (symtab->blockvector) = actual_nblocks;
671
672   /* First run over all the gdb_block objects, creating a real block
673      object for each.  Simultaneously, keep setting the real_block
674      fields.  */
675   for (i = (actual_nblocks - 1), gdb_block_iter = stab->blocks;
676        i >= FIRST_LOCAL_BLOCK;
677        i--, gdb_block_iter = gdb_block_iter->next)
678     {
679       struct block *new_block = allocate_block (&objfile->objfile_obstack);
680       struct symbol *block_name = obstack_alloc (&objfile->objfile_obstack,
681                                                  sizeof (struct symbol));
682       struct type *block_type = arch_type (get_objfile_arch (objfile),
683                                            TYPE_CODE_VOID,
684                                            1,
685                                            "void");
686
687       BLOCK_DICT (new_block) = dict_create_linear (&objfile->objfile_obstack,
688                                                    NULL);
689       /* The address range.  */
690       BLOCK_START (new_block) = (CORE_ADDR) gdb_block_iter->begin;
691       BLOCK_END (new_block) = (CORE_ADDR) gdb_block_iter->end;
692
693       /* The name.  */
694       memset (block_name, 0, sizeof (struct symbol));
695       SYMBOL_DOMAIN (block_name) = VAR_DOMAIN;
696       SYMBOL_CLASS (block_name) = LOC_BLOCK;
697       SYMBOL_SYMTAB (block_name) = symtab;
698       SYMBOL_TYPE (block_name) = lookup_function_type (block_type);
699       SYMBOL_BLOCK_VALUE (block_name) = new_block;
700
701       block_name->ginfo.name = obstack_copy0 (&objfile->objfile_obstack,
702                                               gdb_block_iter->name,
703                                               strlen (gdb_block_iter->name));
704
705       BLOCK_FUNCTION (new_block) = block_name;
706
707       BLOCKVECTOR_BLOCK (symtab->blockvector, i) = new_block;
708       if (begin > BLOCK_START (new_block))
709         begin = BLOCK_START (new_block);
710       if (end < BLOCK_END (new_block))
711         end = BLOCK_END (new_block);
712
713       gdb_block_iter->real_block = new_block;
714     }
715
716   /* Now add the special blocks.  */
717   block_iter = NULL;
718   for (i = 0; i < FIRST_LOCAL_BLOCK; i++)
719     {
720       struct block *new_block;
721
722       new_block = (i == GLOBAL_BLOCK
723                    ? allocate_global_block (&objfile->objfile_obstack)
724                    : allocate_block (&objfile->objfile_obstack));
725       BLOCK_DICT (new_block) = dict_create_linear (&objfile->objfile_obstack,
726                                                    NULL);
727       BLOCK_SUPERBLOCK (new_block) = block_iter;
728       block_iter = new_block;
729
730       BLOCK_START (new_block) = (CORE_ADDR) begin;
731       BLOCK_END (new_block) = (CORE_ADDR) end;
732
733       BLOCKVECTOR_BLOCK (symtab->blockvector, i) = new_block;
734
735       if (i == GLOBAL_BLOCK)
736         set_block_symtab (new_block, symtab);
737     }
738
739   /* Fill up the superblock fields for the real blocks, using the
740      real_block fields populated earlier.  */
741   for (gdb_block_iter = stab->blocks;
742        gdb_block_iter;
743        gdb_block_iter = gdb_block_iter->next)
744     {
745       if (gdb_block_iter->parent != NULL)
746         {
747           /* If the plugin specifically mentioned a parent block, we
748              use that.  */
749           BLOCK_SUPERBLOCK (gdb_block_iter->real_block) =
750             gdb_block_iter->parent->real_block;
751         }
752       else
753         {
754           /* And if not, we set a default parent block.  */
755           BLOCK_SUPERBLOCK (gdb_block_iter->real_block) =
756             BLOCKVECTOR_BLOCK (symtab->blockvector, STATIC_BLOCK);
757         }
758     }
759
760   /* Free memory.  */
761   gdb_block_iter = stab->blocks;
762
763   for (gdb_block_iter = stab->blocks, gdb_block_iter_tmp = gdb_block_iter->next;
764        gdb_block_iter;
765        gdb_block_iter = gdb_block_iter_tmp)
766     {
767       xfree ((void *) gdb_block_iter->name);
768       xfree (gdb_block_iter);
769     }
770   xfree (stab->linetable);
771   xfree ((char *) stab->file_name);
772   xfree (stab);
773 }
774
775 /* Called when closing a gdb_objfile.  Converts OBJ to a proper
776    objfile.  */
777
778 static void
779 jit_object_close_impl (struct gdb_symbol_callbacks *cb,
780                        struct gdb_object *obj)
781 {
782   struct gdb_symtab *i, *j;
783   struct objfile *objfile;
784   jit_dbg_reader_data *priv_data;
785
786   priv_data = cb->priv_data;
787
788   objfile = allocate_objfile (NULL, 0);
789   objfile->gdbarch = target_gdbarch ();
790
791   terminate_minimal_symbol_table (objfile);
792
793   objfile->name = "<< JIT compiled code >>";
794
795   j = NULL;
796   for (i = obj->symtabs; i; i = j)
797     {
798       j = i->next;
799       finalize_symtab (i, objfile);
800     }
801   add_objfile_entry (objfile, *priv_data);
802   xfree (obj);
803 }
804
805 /* Try to read CODE_ENTRY using the loaded jit reader (if any).
806    ENTRY_ADDR is the address of the struct jit_code_entry in the
807    inferior address space.  */
808
809 static int
810 jit_reader_try_read_symtab (struct jit_code_entry *code_entry,
811                             CORE_ADDR entry_addr)
812 {
813   void *gdb_mem;
814   int status;
815   jit_dbg_reader_data priv_data;
816   struct gdb_reader_funcs *funcs;
817   volatile struct gdb_exception e;
818   struct gdb_symbol_callbacks callbacks =
819     {
820       jit_object_open_impl,
821       jit_symtab_open_impl,
822       jit_block_open_impl,
823       jit_symtab_close_impl,
824       jit_object_close_impl,
825
826       jit_symtab_line_mapping_add_impl,
827       jit_target_read_impl,
828
829       &priv_data
830     };
831
832   priv_data = entry_addr;
833
834   if (!loaded_jit_reader)
835     return 0;
836
837   gdb_mem = xmalloc (code_entry->symfile_size);
838
839   status = 1;
840   TRY_CATCH (e, RETURN_MASK_ALL)
841     if (target_read_memory (code_entry->symfile_addr, gdb_mem,
842                             code_entry->symfile_size))
843       status = 0;
844   if (e.reason < 0)
845     status = 0;
846
847   if (status)
848     {
849       funcs = loaded_jit_reader->functions;
850       if (funcs->read (funcs, &callbacks, gdb_mem, code_entry->symfile_size)
851           != GDB_SUCCESS)
852         status = 0;
853     }
854
855   xfree (gdb_mem);
856   if (jit_debug && status == 0)
857     fprintf_unfiltered (gdb_stdlog,
858                         "Could not read symtab using the loaded JIT reader.\n");
859   return status;
860 }
861
862 /* Try to read CODE_ENTRY using BFD.  ENTRY_ADDR is the address of the
863    struct jit_code_entry in the inferior address space.  */
864
865 static void
866 jit_bfd_try_read_symtab (struct jit_code_entry *code_entry,
867                          CORE_ADDR entry_addr,
868                          struct gdbarch *gdbarch)
869 {
870   bfd *nbfd;
871   struct section_addr_info *sai;
872   struct bfd_section *sec;
873   struct objfile *objfile;
874   struct cleanup *old_cleanups;
875   int i;
876   const struct bfd_arch_info *b;
877
878   if (jit_debug)
879     fprintf_unfiltered (gdb_stdlog,
880                         "jit_register_code, symfile_addr = %s, "
881                         "symfile_size = %s\n",
882                         paddress (gdbarch, code_entry->symfile_addr),
883                         pulongest (code_entry->symfile_size));
884
885   nbfd = bfd_open_from_target_memory (code_entry->symfile_addr,
886                                       code_entry->symfile_size, gnutarget);
887   if (nbfd == NULL)
888     {
889       puts_unfiltered (_("Error opening JITed symbol file, ignoring it.\n"));
890       return;
891     }
892
893   /* Check the format.  NOTE: This initializes important data that GDB uses!
894      We would segfault later without this line.  */
895   if (!bfd_check_format (nbfd, bfd_object))
896     {
897       printf_unfiltered (_("\
898 JITed symbol file is not an object file, ignoring it.\n"));
899       gdb_bfd_unref (nbfd);
900       return;
901     }
902
903   /* Check bfd arch.  */
904   b = gdbarch_bfd_arch_info (gdbarch);
905   if (b->compatible (b, bfd_get_arch_info (nbfd)) != b)
906     warning (_("JITed object file architecture %s is not compatible "
907                "with target architecture %s."), bfd_get_arch_info
908              (nbfd)->printable_name, b->printable_name);
909
910   /* Read the section address information out of the symbol file.  Since the
911      file is generated by the JIT at runtime, it should all of the absolute
912      addresses that we care about.  */
913   sai = alloc_section_addr_info (bfd_count_sections (nbfd));
914   old_cleanups = make_cleanup_free_section_addr_info (sai);
915   i = 0;
916   for (sec = nbfd->sections; sec != NULL; sec = sec->next)
917     if ((bfd_get_section_flags (nbfd, sec) & (SEC_ALLOC|SEC_LOAD)) != 0)
918       {
919         /* We assume that these virtual addresses are absolute, and do not
920            treat them as offsets.  */
921         sai->other[i].addr = bfd_get_section_vma (nbfd, sec);
922         sai->other[i].name = xstrdup (bfd_get_section_name (nbfd, sec));
923         sai->other[i].sectindex = sec->index;
924         ++i;
925       }
926
927   /* This call does not take ownership of SAI.  */
928   make_cleanup_bfd_unref (nbfd);
929   objfile = symbol_file_add_from_bfd (nbfd, 0, sai, OBJF_SHARED, NULL);
930
931   do_cleanups (old_cleanups);
932   add_objfile_entry (objfile, entry_addr);
933 }
934
935 /* This function registers code associated with a JIT code entry.  It uses the
936    pointer and size pair in the entry to read the symbol file from the remote
937    and then calls symbol_file_add_from_local_memory to add it as though it were
938    a symbol file added by the user.  */
939
940 static void
941 jit_register_code (struct gdbarch *gdbarch,
942                    CORE_ADDR entry_addr, struct jit_code_entry *code_entry)
943 {
944   int success;
945
946   if (jit_debug)
947     fprintf_unfiltered (gdb_stdlog,
948                         "jit_register_code, symfile_addr = %s, "
949                         "symfile_size = %s\n",
950                         paddress (gdbarch, code_entry->symfile_addr),
951                         pulongest (code_entry->symfile_size));
952
953   success = jit_reader_try_read_symtab (code_entry, entry_addr);
954
955   if (!success)
956     jit_bfd_try_read_symtab (code_entry, entry_addr, gdbarch);
957 }
958
959 /* This function unregisters JITed code and frees the corresponding
960    objfile.  */
961
962 static void
963 jit_unregister_code (struct objfile *objfile)
964 {
965   free_objfile (objfile);
966 }
967
968 /* Look up the objfile with this code entry address.  */
969
970 static struct objfile *
971 jit_find_objf_with_entry_addr (CORE_ADDR entry_addr)
972 {
973   struct objfile *objf;
974
975   ALL_OBJFILES (objf)
976     {
977       struct jit_objfile_data *objf_data;
978
979       objf_data = objfile_data (objf, jit_objfile_data);
980       if (objf_data != NULL && objf_data->addr == entry_addr)
981         return objf;
982     }
983   return NULL;
984 }
985
986 /* This is called when a breakpoint is deleted.  It updates the
987    inferior's cache, if needed.  */
988
989 static void
990 jit_breakpoint_deleted (struct breakpoint *b)
991 {
992   struct bp_location *iter;
993
994   if (b->type != bp_jit_event)
995     return;
996
997   for (iter = b->loc; iter != NULL; iter = iter->next)
998     {
999       struct jit_program_space_data *ps_data;
1000
1001       ps_data = program_space_data (iter->pspace, jit_program_space_data);
1002       if (ps_data != NULL && ps_data->jit_breakpoint == iter->owner)
1003         {
1004           ps_data->cached_code_address = 0;
1005           ps_data->jit_breakpoint = NULL;
1006         }
1007     }
1008 }
1009
1010 /* (Re-)Initialize the jit breakpoint if necessary.
1011    Return 0 on success.  */
1012
1013 static int
1014 jit_breakpoint_re_set_internal (struct gdbarch *gdbarch,
1015                                 struct jit_program_space_data *ps_data)
1016 {
1017   struct minimal_symbol *reg_symbol, *desc_symbol;
1018   struct objfile *objf;
1019   struct jit_objfile_data *objf_data;
1020   CORE_ADDR addr;
1021
1022   if (ps_data->objfile == NULL)
1023     {
1024       /* Lookup the registration symbol.  If it is missing, then we
1025          assume we are not attached to a JIT.  */
1026       reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name, &objf);
1027       if (reg_symbol == NULL || SYMBOL_VALUE_ADDRESS (reg_symbol) == 0)
1028         return 1;
1029
1030       desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL, objf);
1031       if (desc_symbol == NULL || SYMBOL_VALUE_ADDRESS (desc_symbol) == 0)
1032         return 1;
1033
1034       objf_data = get_jit_objfile_data (objf);
1035       objf_data->register_code = reg_symbol;
1036       objf_data->descriptor = desc_symbol;
1037
1038       ps_data->objfile = objf;
1039     }
1040   else
1041     objf_data = get_jit_objfile_data (ps_data->objfile);
1042
1043   addr = SYMBOL_VALUE_ADDRESS (objf_data->register_code);
1044
1045   if (jit_debug)
1046     fprintf_unfiltered (gdb_stdlog,
1047                         "jit_breakpoint_re_set_internal, "
1048                         "breakpoint_addr = %s\n",
1049                         paddress (gdbarch, addr));
1050
1051   if (ps_data->cached_code_address == addr)
1052     return 1;
1053
1054   /* Delete the old breakpoint.  */
1055   if (ps_data->jit_breakpoint != NULL)
1056     delete_breakpoint (ps_data->jit_breakpoint);
1057
1058   /* Put a breakpoint in the registration symbol.  */
1059   ps_data->cached_code_address = addr;
1060   ps_data->jit_breakpoint = create_jit_event_breakpoint (gdbarch, addr);
1061
1062   return 0;
1063 }
1064
1065 /* The private data passed around in the frame unwind callback
1066    functions.  */
1067
1068 struct jit_unwind_private
1069 {
1070   /* Cached register values.  See jit_frame_sniffer to see how this
1071      works.  */
1072   struct gdb_reg_value **registers;
1073
1074   /* The frame being unwound.  */
1075   struct frame_info *this_frame;
1076 };
1077
1078 /* Sets the value of a particular register in this frame.  */
1079
1080 static void
1081 jit_unwind_reg_set_impl (struct gdb_unwind_callbacks *cb, int dwarf_regnum,
1082                          struct gdb_reg_value *value)
1083 {
1084   struct jit_unwind_private *priv;
1085   int gdb_reg;
1086
1087   priv = cb->priv_data;
1088
1089   gdb_reg = gdbarch_dwarf2_reg_to_regnum (get_frame_arch (priv->this_frame),
1090                                           dwarf_regnum);
1091   if (gdb_reg == -1)
1092     {
1093       if (jit_debug)
1094         fprintf_unfiltered (gdb_stdlog,
1095                             _("Could not recognize DWARF regnum %d"),
1096                             dwarf_regnum);
1097       return;
1098     }
1099
1100   gdb_assert (priv->registers);
1101   priv->registers[gdb_reg] = value;
1102 }
1103
1104 static void
1105 reg_value_free_impl (struct gdb_reg_value *value)
1106 {
1107   xfree (value);
1108 }
1109
1110 /* Get the value of register REGNUM in the previous frame.  */
1111
1112 static struct gdb_reg_value *
1113 jit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum)
1114 {
1115   struct jit_unwind_private *priv;
1116   struct gdb_reg_value *value;
1117   int gdb_reg, size;
1118   struct gdbarch *frame_arch;
1119
1120   priv = cb->priv_data;
1121   frame_arch = get_frame_arch (priv->this_frame);
1122
1123   gdb_reg = gdbarch_dwarf2_reg_to_regnum (frame_arch, regnum);
1124   size = register_size (frame_arch, gdb_reg);
1125   value = xmalloc (sizeof (struct gdb_reg_value) + size - 1);
1126   value->defined = deprecated_frame_register_read (priv->this_frame, gdb_reg,
1127                                                    value->value);
1128   value->size = size;
1129   value->free = reg_value_free_impl;
1130   return value;
1131 }
1132
1133 /* gdb_reg_value has a free function, which must be called on each
1134    saved register value.  */
1135
1136 static void
1137 jit_dealloc_cache (struct frame_info *this_frame, void *cache)
1138 {
1139   struct jit_unwind_private *priv_data = cache;
1140   struct gdbarch *frame_arch;
1141   int i;
1142
1143   gdb_assert (priv_data->registers);
1144   frame_arch = get_frame_arch (priv_data->this_frame);
1145
1146   for (i = 0; i < gdbarch_num_regs (frame_arch); i++)
1147     if (priv_data->registers[i] && priv_data->registers[i]->free)
1148       priv_data->registers[i]->free (priv_data->registers[i]);
1149
1150   xfree (priv_data->registers);
1151   xfree (priv_data);
1152 }
1153
1154 /* The frame sniffer for the pseudo unwinder.
1155
1156    While this is nominally a frame sniffer, in the case where the JIT
1157    reader actually recognizes the frame, it does a lot more work -- it
1158    unwinds the frame and saves the corresponding register values in
1159    the cache.  jit_frame_prev_register simply returns the saved
1160    register values.  */
1161
1162 static int
1163 jit_frame_sniffer (const struct frame_unwind *self,
1164                    struct frame_info *this_frame, void **cache)
1165 {
1166   struct jit_unwind_private *priv_data;
1167   struct gdb_unwind_callbacks callbacks;
1168   struct gdb_reader_funcs *funcs;
1169
1170   callbacks.reg_get = jit_unwind_reg_get_impl;
1171   callbacks.reg_set = jit_unwind_reg_set_impl;
1172   callbacks.target_read = jit_target_read_impl;
1173
1174   if (loaded_jit_reader == NULL)
1175     return 0;
1176
1177   funcs = loaded_jit_reader->functions;
1178
1179   gdb_assert (!*cache);
1180
1181   *cache = XZALLOC (struct jit_unwind_private);
1182   priv_data = *cache;
1183   priv_data->registers =
1184     XCALLOC (gdbarch_num_regs (get_frame_arch (this_frame)),
1185              struct gdb_reg_value *);
1186   priv_data->this_frame = this_frame;
1187
1188   callbacks.priv_data = priv_data;
1189
1190   /* Try to coax the provided unwinder to unwind the stack */
1191   if (funcs->unwind (funcs, &callbacks) == GDB_SUCCESS)
1192     {
1193       if (jit_debug)
1194         fprintf_unfiltered (gdb_stdlog, _("Successfully unwound frame using "
1195                                           "JIT reader.\n"));
1196       return 1;
1197     }
1198   if (jit_debug)
1199     fprintf_unfiltered (gdb_stdlog, _("Could not unwind frame using "
1200                                       "JIT reader.\n"));
1201
1202   jit_dealloc_cache (this_frame, *cache);
1203   *cache = NULL;
1204
1205   return 0;
1206 }
1207
1208
1209 /* The frame_id function for the pseudo unwinder.  Relays the call to
1210    the loaded plugin.  */
1211
1212 static void
1213 jit_frame_this_id (struct frame_info *this_frame, void **cache,
1214                    struct frame_id *this_id)
1215 {
1216   struct jit_unwind_private private;
1217   struct gdb_frame_id frame_id;
1218   struct gdb_reader_funcs *funcs;
1219   struct gdb_unwind_callbacks callbacks;
1220
1221   private.registers = NULL;
1222   private.this_frame = this_frame;
1223
1224   /* We don't expect the frame_id function to set any registers, so we
1225      set reg_set to NULL.  */
1226   callbacks.reg_get = jit_unwind_reg_get_impl;
1227   callbacks.reg_set = NULL;
1228   callbacks.target_read = jit_target_read_impl;
1229   callbacks.priv_data = &private;
1230
1231   gdb_assert (loaded_jit_reader);
1232   funcs = loaded_jit_reader->functions;
1233
1234   frame_id = funcs->get_frame_id (funcs, &callbacks);
1235   *this_id = frame_id_build (frame_id.stack_address, frame_id.code_address);
1236 }
1237
1238 /* Pseudo unwinder function.  Reads the previously fetched value for
1239    the register from the cache.  */
1240
1241 static struct value *
1242 jit_frame_prev_register (struct frame_info *this_frame, void **cache, int reg)
1243 {
1244   struct jit_unwind_private *priv = *cache;
1245   struct gdb_reg_value *value;
1246
1247   if (priv == NULL)
1248     return frame_unwind_got_optimized (this_frame, reg);
1249
1250   gdb_assert (priv->registers);
1251   value = priv->registers[reg];
1252   if (value && value->defined)
1253     return frame_unwind_got_bytes (this_frame, reg, value->value);
1254   else
1255     return frame_unwind_got_optimized (this_frame, reg);
1256 }
1257
1258 /* Relay everything back to the unwinder registered by the JIT debug
1259    info reader.*/
1260
1261 static const struct frame_unwind jit_frame_unwind =
1262 {
1263   NORMAL_FRAME,
1264   default_frame_unwind_stop_reason,
1265   jit_frame_this_id,
1266   jit_frame_prev_register,
1267   NULL,
1268   jit_frame_sniffer,
1269   jit_dealloc_cache
1270 };
1271
1272
1273 /* This is the information that is stored at jit_gdbarch_data for each
1274    architecture.  */
1275
1276 struct jit_gdbarch_data_type
1277 {
1278   /* Has the (pseudo) unwinder been prepended? */
1279   int unwinder_registered;
1280 };
1281
1282 /* Check GDBARCH and prepend the pseudo JIT unwinder if needed.  */
1283
1284 static void
1285 jit_prepend_unwinder (struct gdbarch *gdbarch)
1286 {
1287   struct jit_gdbarch_data_type *data;
1288
1289   data = gdbarch_data (gdbarch, jit_gdbarch_data);
1290   if (!data->unwinder_registered)
1291     {
1292       frame_unwind_prepend_unwinder (gdbarch, &jit_frame_unwind);
1293       data->unwinder_registered = 1;
1294     }
1295 }
1296
1297 /* Register any already created translations.  */
1298
1299 static void
1300 jit_inferior_init (struct gdbarch *gdbarch)
1301 {
1302   struct jit_descriptor descriptor;
1303   struct jit_code_entry cur_entry;
1304   struct jit_program_space_data *ps_data;
1305   CORE_ADDR cur_entry_addr;
1306
1307   if (jit_debug)
1308     fprintf_unfiltered (gdb_stdlog, "jit_inferior_init\n");
1309
1310   jit_prepend_unwinder (gdbarch);
1311
1312   ps_data = get_jit_program_space_data ();
1313   if (jit_breakpoint_re_set_internal (gdbarch, ps_data) != 0)
1314     return;
1315
1316   /* Read the descriptor so we can check the version number and load
1317      any already JITed functions.  */
1318   if (!jit_read_descriptor (gdbarch, &descriptor, ps_data))
1319     return;
1320
1321   /* Check that the version number agrees with that we support.  */
1322   if (descriptor.version != 1)
1323     {
1324       printf_unfiltered (_("Unsupported JIT protocol version %ld "
1325                            "in descriptor (expected 1)\n"),
1326                          (long) descriptor.version);
1327       return;
1328     }
1329
1330   /* If we've attached to a running program, we need to check the descriptor
1331      to register any functions that were already generated.  */
1332   for (cur_entry_addr = descriptor.first_entry;
1333        cur_entry_addr != 0;
1334        cur_entry_addr = cur_entry.next_entry)
1335     {
1336       jit_read_code_entry (gdbarch, cur_entry_addr, &cur_entry);
1337
1338       /* This hook may be called many times during setup, so make sure we don't
1339          add the same symbol file twice.  */
1340       if (jit_find_objf_with_entry_addr (cur_entry_addr) != NULL)
1341         continue;
1342
1343       jit_register_code (gdbarch, cur_entry_addr, &cur_entry);
1344     }
1345 }
1346
1347 /* Exported routine to call when an inferior has been created.  */
1348
1349 void
1350 jit_inferior_created_hook (void)
1351 {
1352   jit_inferior_init (target_gdbarch ());
1353 }
1354
1355 /* Exported routine to call to re-set the jit breakpoints,
1356    e.g. when a program is rerun.  */
1357
1358 void
1359 jit_breakpoint_re_set (void)
1360 {
1361   jit_breakpoint_re_set_internal (target_gdbarch (),
1362                                   get_jit_program_space_data ());
1363 }
1364
1365 /* This function cleans up any code entries left over when the
1366    inferior exits.  We get left over code when the inferior exits
1367    without unregistering its code, for example when it crashes.  */
1368
1369 static void
1370 jit_inferior_exit_hook (struct inferior *inf)
1371 {
1372   struct objfile *objf;
1373   struct objfile *temp;
1374
1375   ALL_OBJFILES_SAFE (objf, temp)
1376     {
1377       struct jit_objfile_data *objf_data = objfile_data (objf,
1378                                                          jit_objfile_data);
1379
1380       if (objf_data != NULL && objf_data->addr != 0)
1381         jit_unregister_code (objf);
1382     }
1383 }
1384
1385 void
1386 jit_event_handler (struct gdbarch *gdbarch)
1387 {
1388   struct jit_descriptor descriptor;
1389   struct jit_code_entry code_entry;
1390   CORE_ADDR entry_addr;
1391   struct objfile *objf;
1392
1393   /* Read the descriptor from remote memory.  */
1394   if (!jit_read_descriptor (gdbarch, &descriptor,
1395                             get_jit_program_space_data ()))
1396     return;
1397   entry_addr = descriptor.relevant_entry;
1398
1399   /* Do the corresponding action.  */
1400   switch (descriptor.action_flag)
1401     {
1402     case JIT_NOACTION:
1403       break;
1404     case JIT_REGISTER:
1405       jit_read_code_entry (gdbarch, entry_addr, &code_entry);
1406       jit_register_code (gdbarch, entry_addr, &code_entry);
1407       break;
1408     case JIT_UNREGISTER:
1409       objf = jit_find_objf_with_entry_addr (entry_addr);
1410       if (objf == NULL)
1411         printf_unfiltered (_("Unable to find JITed code "
1412                              "entry at address: %s\n"),
1413                            paddress (gdbarch, entry_addr));
1414       else
1415         jit_unregister_code (objf);
1416
1417       break;
1418     default:
1419       error (_("Unknown action_flag value in JIT descriptor!"));
1420       break;
1421     }
1422 }
1423
1424 /* Called to free the data allocated to the jit_program_space_data slot.  */
1425
1426 static void
1427 free_objfile_data (struct objfile *objfile, void *data)
1428 {
1429   struct jit_objfile_data *objf_data = data;
1430
1431   if (objf_data->register_code != NULL)
1432     {
1433       struct jit_program_space_data *ps_data;
1434
1435       ps_data = program_space_data (objfile->pspace, jit_program_space_data);
1436       if (ps_data != NULL && ps_data->objfile == objfile)
1437         ps_data->objfile = NULL;
1438     }
1439
1440   xfree (data);
1441 }
1442
1443 /* Initialize the jit_gdbarch_data slot with an instance of struct
1444    jit_gdbarch_data_type */
1445
1446 static void *
1447 jit_gdbarch_data_init (struct obstack *obstack)
1448 {
1449   struct jit_gdbarch_data_type *data;
1450
1451   data = obstack_alloc (obstack, sizeof (struct jit_gdbarch_data_type));
1452   data->unwinder_registered = 0;
1453   return data;
1454 }
1455
1456 /* Provide a prototype to silence -Wmissing-prototypes.  */
1457
1458 extern void _initialize_jit (void);
1459
1460 void
1461 _initialize_jit (void)
1462 {
1463   jit_reader_dir = relocate_gdb_directory (JIT_READER_DIR,
1464                                            JIT_READER_DIR_RELOCATABLE);
1465   add_setshow_zuinteger_cmd ("jit", class_maintenance, &jit_debug,
1466                              _("Set JIT debugging."),
1467                              _("Show JIT debugging."),
1468                              _("When non-zero, JIT debugging is enabled."),
1469                              NULL,
1470                              show_jit_debug,
1471                              &setdebuglist, &showdebuglist);
1472
1473   observer_attach_inferior_exit (jit_inferior_exit_hook);
1474   observer_attach_breakpoint_deleted (jit_breakpoint_deleted);
1475
1476   jit_objfile_data =
1477     register_objfile_data_with_cleanup (NULL, free_objfile_data);
1478   jit_program_space_data =
1479     register_program_space_data_with_cleanup (NULL,
1480                                               jit_program_space_data_cleanup);
1481   jit_gdbarch_data = gdbarch_data_register_pre_init (jit_gdbarch_data_init);
1482   if (is_dl_available ())
1483     {
1484       add_com ("jit-reader-load", no_class, jit_reader_load_command, _("\
1485 Load FILE as debug info reader and unwinder for JIT compiled code.\n\
1486 Usage: jit-reader-load FILE\n\
1487 Try to load file FILE as a debug info reader (and unwinder) for\n\
1488 JIT compiled code.  The file is loaded from " JIT_READER_DIR ",\n\
1489 relocated relative to the GDB executable if required."));
1490       add_com ("jit-reader-unload", no_class, jit_reader_unload_command, _("\
1491 Unload the currently loaded JIT debug info reader.\n\
1492 Usage: jit-reader-unload FILE\n\n\
1493 Do \"help jit-reader-load\" for info on loading debug info readers."));
1494     }
1495 }