summaryrefslogtreecommitdiff
path: root/gdb/ada-lang.h
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2010-10-04 22:32:27 +0000
committerJoel Brobecker <brobecker@gnat.com>2010-10-04 22:32:27 +0000
commit4df5723d3d1f3ac8e5ad69db48938d6062f1b837 (patch)
treee3471a47ebe054775b1986038419954548b98d9b /gdb/ada-lang.h
parent1d12b35d8847fe309096c6f6ff47384e27ff975e (diff)
downloadgdb-4df5723d3d1f3ac8e5ad69db48938d6062f1b837.tar.gz
[Ada/funcalls] do not coerce fat pointers on the stack
When one of the parameter values in a subprogram calls is an array whose value does not come from inferior memory, the debugger first copies the array value in inferior memory. Up to now, the memory used to hold that copy was taken from the stack (just below the SP), but this is causing problems on SPARC v9. So the immediate fix is to follow what C does with arrays and strings, which is allocate memory on the heap. gdb/ChangeLog: * ada-lang.c: #include "value.h". (ensure_lval): Delete advance declaration. Remove gdbarch and sp arguments. Implement using value_allocate_space_in_inferior instead of allocating memory from the stack. (make_array_descriptor): Remove gdbarch and sp parameters. Update calls to ensure_lval. (ada_convert_actual): Remove gdbarch and sp parameters. Update calls to make_array_descriptor and ensure_lval. * ada-lang.h (ada_convert_actual): Update declaration. * infcall.c (value_arg_coerce): Update call to ada_convert_actual.
Diffstat (limited to 'gdb/ada-lang.h')
-rw-r--r--gdb/ada-lang.h4
1 files changed, 1 insertions, 3 deletions
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 935c2e146f9..cbd0f0606a1 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -181,9 +181,7 @@ extern void ada_printstr (struct ui_file *, struct type *, const gdb_byte *,
const struct value_print_options *);
struct value *ada_convert_actual (struct value *actual,
- struct type *formal_type0,
- struct gdbarch *gdbarch,
- CORE_ADDR *sp);
+ struct type *formal_type0);
extern struct value *ada_value_subscript (struct value *, int,
struct value **);