GDB (xrefs)
Classes | Typedefs | Functions | Variables
/tmp/gdb-7.10/gdb/jit.c File Reference
#include "defs.h"
#include "jit.h"
#include "jit-reader.h"
#include "block.h"
#include "breakpoint.h"
#include "command.h"
#include "dictionary.h"
#include "filenames.h"
#include "frame-unwind.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "inferior.h"
#include "observer.h"
#include "objfiles.h"
#include "regcache.h"
#include "symfile.h"
#include "symtab.h"
#include "target.h"
#include "gdb-dlfcn.h"
#include <sys/stat.h>
#include "gdb_bfd.h"

Go to the source code of this file.

Classes

struct  target_buffer
 
struct  jit_reader
 
struct  jit_program_space_data
 
struct  jit_objfile_data
 
struct  gdb_block
 
struct  gdb_symtab
 
struct  gdb_object
 
struct  jit_unwind_private
 
struct  jit_gdbarch_data_type
 

Typedefs

typedef struct gdb_reader_funcs *( reader_init_fn_type) (void)
 
typedef CORE_ADDR jit_dbg_reader_data
 

Functions

static void jit_inferior_init (struct gdbarch *gdbarch)
 
static void show_jit_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void * mem_bfd_iovec_open (struct bfd *abfd, void *open_closure)
 
static int mem_bfd_iovec_close (struct bfd *abfd, void *stream)
 
static file_ptr mem_bfd_iovec_pread (struct bfd *abfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset)
 
static int mem_bfd_iovec_stat (struct bfd *abfd, void *stream, struct stat *sb)
 
static struct bfd * bfd_open_from_target_memory (CORE_ADDR addr, ULONGEST size, char *target)
 
static struct jit_readerjit_reader_load (const char *file_name)
 
static void jit_reader_load_command (char *args, int from_tty)
 
static void jit_reader_unload_command (char *args, int from_tty)
 
static struct jit_objfile_dataget_jit_objfile_data (struct objfile *objf)
 
static void add_objfile_entry (struct objfile *objfile, CORE_ADDR entry)
 
static struct jit_program_space_dataget_jit_program_space_data (void)
 
static void jit_program_space_data_cleanup (struct program_space *ps, void *arg)
 
static int jit_read_descriptor (struct gdbarch *gdbarch, struct jit_descriptor *descriptor, struct jit_program_space_data *ps_data)
 
static void jit_read_code_entry (struct gdbarch *gdbarch, CORE_ADDR code_addr, struct jit_code_entry *code_entry)
 
static enum gdb_status jit_target_read_impl (GDB_CORE_ADDR target_mem, void *gdb_buf, int len)
 
static struct gdb_objectjit_object_open_impl (struct gdb_symbol_callbacks *cb)
 
static struct gdb_symtabjit_symtab_open_impl (struct gdb_symbol_callbacks *cb, struct gdb_object *object, const char *file_name)
 
static int compare_block (const struct gdb_block *const old, const struct gdb_block *const newobj)
 
static struct gdb_blockjit_block_open_impl (struct gdb_symbol_callbacks *cb, struct gdb_symtab *symtab, struct gdb_block *parent, GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char *name)
 
static void jit_symtab_line_mapping_add_impl (struct gdb_symbol_callbacks *cb, struct gdb_symtab *stab, int nlines, struct gdb_line_mapping *map)
 
static void jit_symtab_close_impl (struct gdb_symbol_callbacks *cb, struct gdb_symtab *stab)
 
static void finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile)
 
static void jit_object_close_impl (struct gdb_symbol_callbacks *cb, struct gdb_object *obj)
 
static int jit_reader_try_read_symtab (struct jit_code_entry *code_entry, CORE_ADDR entry_addr)
 
static void jit_bfd_try_read_symtab (struct jit_code_entry *code_entry, CORE_ADDR entry_addr, struct gdbarch *gdbarch)
 
static void jit_register_code (struct gdbarch *gdbarch, CORE_ADDR entry_addr, struct jit_code_entry *code_entry)
 
static void jit_unregister_code (struct objfile *objfile)
 
static struct objfilejit_find_objf_with_entry_addr (CORE_ADDR entry_addr)
 
static void jit_breakpoint_deleted (struct breakpoint *b)
 
static int jit_breakpoint_re_set_internal (struct gdbarch *gdbarch, struct jit_program_space_data *ps_data)
 
static void jit_unwind_reg_set_impl (struct gdb_unwind_callbacks *cb, int dwarf_regnum, struct gdb_reg_value *value)
 
static void reg_value_free_impl (struct gdb_reg_value *value)
 
static struct gdb_reg_valuejit_unwind_reg_get_impl (struct gdb_unwind_callbacks *cb, int regnum)
 
static void jit_dealloc_cache (struct frame_info *this_frame, void *cache)
 
static int jit_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **cache)
 
static void jit_frame_this_id (struct frame_info *this_frame, void **cache, struct frame_id *this_id)
 
static struct valuejit_frame_prev_register (struct frame_info *this_frame, void **cache, int reg)
 
static void jit_prepend_unwinder (struct gdbarch *gdbarch)
 
void jit_inferior_created_hook (void)
 
void jit_breakpoint_re_set (void)
 
static void jit_inferior_exit_hook (struct inferior *inf)
 
void jit_event_handler (struct gdbarch *gdbarch)
 
static void free_objfile_data (struct objfile *objfile, void *data)
 
static void * jit_gdbarch_data_init (struct obstack *obstack)
 
void _initialize_jit (void)
 

Variables

static const char * jit_reader_dir = NULL
 
static const struct objfile_data * jit_objfile_data
 
static const char *const jit_break_name = "__jit_debug_register_code"
 
static const char *const jit_descriptor_name = "__jit_debug_descriptor"
 
static const struct program_space_data * jit_program_space_data = NULL
 
static struct gdbarch_datajit_gdbarch_data
 
static unsigned int jit_debug = 0
 
static struct jit_readerloaded_jit_reader = NULL
 
static const char * reader_init_fn_sym = "gdb_init_reader"
 
static const struct frame_unwind jit_frame_unwind
 

Typedef Documentation

Definition at line 484 of file jit.c.

typedef struct gdb_reader_funcs*( reader_init_fn_type) (void)

Definition at line 160 of file jit.c.

Function Documentation

void _initialize_jit ( void  )
static void add_objfile_entry ( struct objfile objfile,
CORE_ADDR  entry 
)
static

Definition at line 302 of file jit.c.

References jit_objfile_data::addr, and get_jit_objfile_data().

Referenced by jit_bfd_try_read_symtab(), and jit_object_close_impl().

static struct bfd* bfd_open_from_target_memory ( CORE_ADDR  addr,
ULONGEST  size,
char *  target 
)
static
static int compare_block ( const struct gdb_block *const  old,
const struct gdb_block *const  newobj 
)
static

Definition at line 535 of file jit.c.

References gdb_block::begin, and gdb_block::end.

Referenced by jit_block_open_impl().

static void finalize_symtab ( struct gdb_symtab stab,
struct objfile objfile 
)
static
static void free_objfile_data ( struct objfile objfile,
void *  data 
)
static
static struct jit_objfile_data* get_jit_objfile_data ( struct objfile objf)
static

Definition at line 284 of file jit.c.

Referenced by add_objfile_entry(), jit_breakpoint_re_set_internal(), and jit_read_descriptor().

static struct jit_program_space_data* get_jit_program_space_data ( void  )
static

Definition at line 314 of file jit.c.

References current_program_space.

Referenced by jit_breakpoint_re_set(), jit_event_handler(), and jit_inferior_init().

static void jit_bfd_try_read_symtab ( struct jit_code_entry code_entry,
CORE_ADDR  entry_addr,
struct gdbarch gdbarch 
)
static
static struct gdb_block* jit_block_open_impl ( struct gdb_symbol_callbacks cb,
struct gdb_symtab symtab,
struct gdb_block parent,
GDB_CORE_ADDR  begin,
GDB_CORE_ADDR  end,
const char *  name 
)
static
static void jit_breakpoint_deleted ( struct breakpoint b)
static
void jit_breakpoint_re_set ( void  )
static int jit_breakpoint_re_set_internal ( struct gdbarch gdbarch,
struct jit_program_space_data ps_data 
)
static
static void jit_dealloc_cache ( struct frame_info this_frame,
void *  cache 
)
static
void jit_event_handler ( struct gdbarch gdbarch)
static struct objfile* jit_find_objf_with_entry_addr ( CORE_ADDR  entry_addr)
static

Definition at line 980 of file jit.c.

References jit_objfile_data::addr, and ALL_OBJFILES.

Referenced by jit_event_handler(), and jit_inferior_init().

static struct value* jit_frame_prev_register ( struct frame_info this_frame,
void **  cache,
int  reg 
)
static
static int jit_frame_sniffer ( const struct frame_unwind self,
struct frame_info this_frame,
void **  cache 
)
static
static void jit_frame_this_id ( struct frame_info this_frame,
void **  cache,
struct frame_id this_id 
)
static
static void* jit_gdbarch_data_init ( struct obstack *  obstack)
static

Definition at line 1459 of file jit.c.

References jit_gdbarch_data_type::unwinder_registered.

Referenced by _initialize_jit().

void jit_inferior_created_hook ( void  )

Definition at line 1362 of file jit.c.

References jit_inferior_init(), and target_gdbarch().

Referenced by follow_exec().

static void jit_inferior_exit_hook ( struct inferior inf)
static

Definition at line 1382 of file jit.c.

References jit_objfile_data::addr, ALL_OBJFILES_SAFE, and jit_unregister_code().

Referenced by _initialize_jit().

static void jit_inferior_init ( struct gdbarch gdbarch)
static
static void jit_object_close_impl ( struct gdb_symbol_callbacks cb,
struct gdb_object obj 
)
static
static struct gdb_object* jit_object_open_impl ( struct gdb_symbol_callbacks cb)
static

Definition at line 504 of file jit.c.

Referenced by jit_reader_try_read_symtab().

static void jit_prepend_unwinder ( struct gdbarch gdbarch)
static
static void jit_program_space_data_cleanup ( struct program_space ps,
void *  arg 
)
static

Definition at line 330 of file jit.c.

References xfree().

Referenced by _initialize_jit().

static void jit_read_code_entry ( struct gdbarch gdbarch,
CORE_ADDR  code_addr,
struct jit_code_entry code_entry 
)
static
static int jit_read_descriptor ( struct gdbarch gdbarch,
struct jit_descriptor descriptor,
struct jit_program_space_data ps_data 
)
static
static struct jit_reader* jit_reader_load ( const char *  file_name)
static
static void jit_reader_load_command ( char *  args,
int  from_tty 
)
static
static int jit_reader_try_read_symtab ( struct jit_code_entry code_entry,
CORE_ADDR  entry_addr 
)
static
static void jit_reader_unload_command ( char *  args,
int  from_tty 
)
static
static void jit_register_code ( struct gdbarch gdbarch,
CORE_ADDR  entry_addr,
struct jit_code_entry code_entry 
)
static
static void jit_symtab_close_impl ( struct gdb_symbol_callbacks cb,
struct gdb_symtab stab 
)
static

Definition at line 624 of file jit.c.

Referenced by jit_reader_try_read_symtab().

static void jit_symtab_line_mapping_add_impl ( struct gdb_symbol_callbacks cb,
struct gdb_symtab stab,
int  nlines,
struct gdb_line_mapping map 
)
static
static struct gdb_symtab* jit_symtab_open_impl ( struct gdb_symbol_callbacks cb,
struct gdb_object object,
const char *  file_name 
)
static

Definition at line 516 of file jit.c.

References gdb_symtab::file_name, and gdb_symtab::next.

Referenced by jit_reader_try_read_symtab().

static enum gdb_status jit_target_read_impl ( GDB_CORE_ADDR  target_mem,
void *  gdb_buf,
int  len 
)
static

Definition at line 490 of file jit.c.

References GDB_FAIL, GDB_SUCCESS, and target_read_memory().

Referenced by jit_frame_sniffer(), jit_frame_this_id(), and jit_reader_try_read_symtab().

static void jit_unregister_code ( struct objfile objfile)
static

Definition at line 972 of file jit.c.

References free_objfile().

Referenced by jit_event_handler(), and jit_inferior_exit_hook().

static struct gdb_reg_value* jit_unwind_reg_get_impl ( struct gdb_unwind_callbacks cb,
int  regnum 
)
static
static void jit_unwind_reg_set_impl ( struct gdb_unwind_callbacks cb,
int  dwarf_regnum,
struct gdb_reg_value value 
)
static
static int mem_bfd_iovec_close ( struct bfd *  abfd,
void *  stream 
)
static

Definition at line 89 of file jit.c.

References xfree().

Referenced by bfd_open_from_target_memory().

static void* mem_bfd_iovec_open ( struct bfd *  abfd,
void *  open_closure 
)
static

Definition at line 81 of file jit.c.

Referenced by bfd_open_from_target_memory().

static file_ptr mem_bfd_iovec_pread ( struct bfd *  abfd,
void *  stream,
void *  buf,
file_ptr  nbytes,
file_ptr  offset 
)
static

Definition at line 101 of file jit.c.

References target_buffer::base, err, offset, target_buffer::size, and target_read_memory().

Referenced by bfd_open_from_target_memory().

static int mem_bfd_iovec_stat ( struct bfd *  abfd,
void *  stream,
struct stat *  sb 
)
static

Definition at line 125 of file jit.c.

References target_buffer::size.

Referenced by bfd_open_from_target_memory().

static void reg_value_free_impl ( struct gdb_reg_value value)
static

Definition at line 1117 of file jit.c.

References xfree().

Referenced by jit_unwind_reg_get_impl().

static void show_jit_debug ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 66 of file jit.c.

References _, and fprintf_filtered().

Referenced by _initialize_jit().

Variable Documentation

const char* const jit_break_name = "__jit_debug_register_code"
static

Definition at line 47 of file jit.c.

Referenced by jit_breakpoint_re_set_internal().

unsigned int jit_debug = 0
static
const char* const jit_descriptor_name = "__jit_debug_descriptor"
static

Definition at line 49 of file jit.c.

Referenced by jit_breakpoint_re_set_internal().

const struct frame_unwind jit_frame_unwind
static
Initial value:
=
{
NULL,
}
static void jit_dealloc_cache(struct frame_info *this_frame, void *cache)
Definition: jit.c:1149
static int jit_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **cache)
Definition: jit.c:1175
static void jit_frame_this_id(struct frame_info *this_frame, void **cache, struct frame_id *this_id)
Definition: jit.c:1225
static struct value * jit_frame_prev_register(struct frame_info *this_frame, void **cache, int reg)
Definition: jit.c:1254
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:180

Definition at line 1273 of file jit.c.

struct gdbarch_data* jit_gdbarch_data
static

Definition at line 59 of file jit.c.

const struct objfile_data* jit_objfile_data
static

Definition at line 45 of file jit.c.

const struct program_space_data* jit_program_space_data = NULL
static

Definition at line 51 of file jit.c.

const char* jit_reader_dir = NULL
static

Definition at line 43 of file jit.c.

Referenced by _initialize_jit(), and jit_reader_load_command().

struct jit_reader * loaded_jit_reader = NULL
static
const char* reader_init_fn_sym = "gdb_init_reader"
static

Definition at line 161 of file jit.c.