This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, As I hinted a littler earlier, there is a problem in the debugger where we use a the result from a function call as parameter to another function call. The problem arises when the parameter is a reference type. Assuming My_Parameter is a variable of type Parameter which is defined as a record (the equivalent of a C "struct"): (gdb) p ident (ident (my_parameter)) Attempt to take address of value not located in memory. There were a couple of issues: One was an omission during the construction of a value (inside ada-lang.c:ensure_lval), where we forgot to set the value->lval; And another in the handling of formals that are reference types. Paul fixed the problem as follow: 2008-01-08 Paul Hilfinger <hilfinger@adacore.com> * ada-lang.c (ensure_lval): Fix value lval kind. (convert_actual): Add handling for arguments passed by reference. I also wrote a testcase: 2008-01-08 Joel Brobecker <brobecker@adacore.com> * gdb.ada/funcall_param: New test program. * gdb.ada/funcall_param.exp: New testcase. Tested on x86-linux, no regression. I checked the ada-lang.c change in, but I will defer a bit the checkin of the testcase because the testcase itself depends on another change that I need to make (Ada parameter coercion, see http://www.sourceware.org/ml/gdb-patches/2008-01/msg00129.html) in order to pass. -- Joel
Attachment:
ref_args.diff
Description: Text document
Attachment:
ref_args-tc.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |