OSDN Git Service

[Ada/funcalls] do not coerce fat pointers on the stack
authorbrobecke <brobecke>
Tue, 5 Oct 2010 07:32:27 +0000 (07:32 +0000)
committerbrobecke <brobecke>
Tue, 5 Oct 2010 07:32:27 +0000 (07:32 +0000)
commite13e946cc107c441990817c021e2d6d6eb1d05ae
tree8385b449c2919d3875178cbfe6ae9ae01e44e14b
parent96b07c1f397d52e36495e04b8a8a45ee32d46c7a
[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.
gdb/ChangeLog
gdb/ada-lang.c
gdb/ada-lang.h
gdb/infcall.c