diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2008-09-11 14:27:34 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2008-09-11 14:27:34 +0000 |
commit | 3e3b026fee8cd62ac6c2cfc7f86cec972d8f5676 (patch) | |
tree | bc601c999d48b731197ac2a508aafb6c06ad054c /gdb/scm-lang.c | |
parent | f8dcfc0affda04681b337c807c15d3c59badc33c (diff) | |
download | gdb-3e3b026fee8cd62ac6c2cfc7f86cec972d8f5676.zip gdb-3e3b026fee8cd62ac6c2cfc7f86cec972d8f5676.tar.gz gdb-3e3b026fee8cd62ac6c2cfc7f86cec972d8f5676.tar.bz2 |
* valops.c: Include "objfiles.h" and "symtab.h".
(find_function_in_inferior): New argument OBJF_P. Use it to return
objfile where function is defined. Use per-objfile arch types
instead of builtin_type_ to define default return type.
* linux-fork.c (checkpoint_command): Update calls. Use per-objfile
architecture to define inferior call argument types.
* gcore.c (derive_heap_segment): Likewise.
* objc-lang.c (value_nsstring): Likewise.
* scm-lang.c (scm_lookup_name): Likewise.
* scm-valprint.c (scm_inferior_print): Likewise.
* valops.c (value_allocate_space_in_inferior): Likewise.
* eval.c (evaluate_subexp_standard): Update calls.
* objc-lang.c (lookup_objc_class, print_object_command): Likewise.
* linux-fork.c: Include "objfiles.h".
* scm-lang.c: Include "objfiles.h".
* scm-valprint.c: Include "objfiles.h".
Diffstat (limited to 'gdb/scm-lang.c')
-rw-r--r-- | gdb/scm-lang.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gdb/scm-lang.c b/gdb/scm-lang.c index 08f016d..003e27a 100644 --- a/gdb/scm-lang.c +++ b/gdb/scm-lang.c @@ -32,6 +32,7 @@ #include "gdb_string.h" #include "gdbcore.h" #include "infcall.h" +#include "objfiles.h" extern void _initialize_scheme_language (void); static struct value *evaluate_subexp_scm (struct type *, struct expression *, @@ -147,13 +148,19 @@ in_eval_c (void) static struct value * scm_lookup_name (char *str) { + struct objfile *objf; + struct gdbarch *gdbarch; struct value *args[3]; int len = strlen (str); struct value *func; struct value *val; struct symbol *sym; + + func = find_function_in_inferior ("scm_lookup_cstr", &objf); + gdbarch = get_objfile_arch (objf); + args[0] = value_allocate_space_in_inferior (len); - args[1] = value_from_longest (builtin_type_int, len); + args[1] = value_from_longest (builtin_type (gdbarch)->builtin_int, len); write_memory (value_as_long (args[0]), (gdb_byte *) str, len); if (in_eval_c () @@ -165,7 +172,6 @@ scm_lookup_name (char *str) /* FIXME in this case, we should try lookup_symbol first */ args[2] = value_from_longest (builtin_type_scm, SCM_EOL); - func = find_function_in_inferior ("scm_lookup_cstr"); val = call_function_by_hand (func, 3, args); if (!value_logical_not (val)) return value_ind (val); @@ -187,7 +193,7 @@ scm_evaluate_string (char *str, int len) write_memory (iaddr, (gdb_byte *) str, len); /* FIXME - should find and pass env */ write_memory (iaddr + len, (gdb_byte *) "", 1); - func = find_function_in_inferior ("scm_evstr"); + func = find_function_in_inferior ("scm_evstr", NULL); return call_function_by_hand (func, 1, &addr); } |