char * gdbscm_safe_source_script (const char *filename) { /* scm_c_primitive_load_path only looks in %load-path for files with relative paths. An alternative could be to temporarily add "." to %load-path, but we don't want %load-path to be searched. At least not by default. This function is invoked by the "source" GDB command which already has its own path search support. */ char *abs_filename = NULL; void *result; if (!IS_ABSOLUTE_PATH (filename)) { abs_filename = gdb_realpath (filename); filename = abs_filename; } result = gdbscm_with_guile (scscm_source_scheme_script, (void *) filename); xfree (abs_filename); if (result != NULL) return xstrdup (result); return NULL; }
char * gdbscm_safe_eval_string (const char *string, int display_result) { struct eval_scheme_string_data data = { string, display_result }; void *result; result = gdbscm_with_guile (scscm_eval_scheme_string, (void *) &data); if (result != NULL) return xstrdup (result); return NULL; }
static int gdbscm_disasm_read_memory (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, struct disassemble_info *dinfo) { struct gdbscm_disasm_read_data data; const char *status; data.memaddr = memaddr; data.myaddr = myaddr; data.length = length; data.dinfo = dinfo; status = gdbscm_with_guile (gdbscm_disasm_read_memory_worker, &data); /* TODO: IWBN to distinguish problems reading target memory versus problems with the port (e.g., EOF). */ return status != NULL ? -1 : 0; }
static int gdbscm_disasm_read_memory (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length, struct disassemble_info *dinfo) { struct gdbscm_disasm_read_data data; void *status; data.memaddr = memaddr; data.myaddr = myaddr; data.length = length; data.dinfo = dinfo; status = gdbscm_with_guile (gdbscm_disasm_read_memory_worker, &data); /* TODO: IWBN to distinguish problems reading target memory versus problems with the port (e.g., EOF). We return TARGET_XFER_E_IO here as that's what memory_error looks for. */ return status != NULL ? TARGET_XFER_E_IO : 0; }