delve/pkg/proc
Alessandro Arzilli 60830c2b1d More Function Calls, parts 2 (#1504)
* proc: support nested function calls

Changes the code in fncall.go to support nested function calls.

This changes delays argument evaluation until after we have used
the call injection protocol to allocate an argument frame. When
evaluating the parse tree of an expression we'll initiate each
function call we find on the way down and then complete the function
call on the way up.

For example. in:

	f(g(x))

we will:

1. initiate the call injection protocol for f(...)
2. progress it until the point where we have space for the arguments
   of 'f' (i.e. when we receive the debugCallAXCompleteCall message
   from the target runtime)
3. inititate the call injection protocol for g(...)
4. progress it until the point where we have space for the arguments
   of 'g'
5. copy the value of x into the argument frame of 'g'
6. finish the call to g(...)
7. copy the return value of g(x) into the argument frame of 'f'
8. finish the call to f(...)

Updates #119

* proc: bugfix: closure addr was wrong for non-closure functions
2019-05-30 08:08:37 -07:00
..
core Miscellaneous logging improvements (#1525) 2019-03-27 14:58:36 -07:00
gdbserial Miscellaneous logging improvements (#1525) 2019-03-27 14:58:36 -07:00
linutil proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
native proc/native: fix target program crash caused by call injection (linux) (#1538) 2019-04-25 09:45:37 -07:00
test proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
winutil proc/gdbserial: do not return floating point regs when not requested (#1497) 2019-02-26 08:53:45 -08:00
arch.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
bininfo.go proc: trivial typo fix (#1561) 2019-05-30 08:02:27 -07:00
breakpoints.go proc/*: allow stepping into functions without debug_info symbols 2018-11-20 12:57:25 -08:00
disasm_amd64.go proc/*: allow stepping into functions without debug_info symbols 2018-11-20 12:57:25 -08:00
disasm.go *: Misc refactors, and doc additions 2018-09-19 20:59:35 +02:00
doc.go Move top-level packages into pkg 2017-02-08 12:17:19 -08:00
dwarf_expr_test.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
eval.go proc: allow function calls to appear inside an expression (#1503) 2019-05-09 08:29:58 -07:00
fncall.go More Function Calls, parts 2 (#1504) 2019-05-30 08:08:37 -07:00
interface.go More Function Calls, parts 2 (#1504) 2019-05-30 08:08:37 -07:00
mem.go More Function Calls, parts 2 (#1504) 2019-05-30 08:08:37 -07:00
moduledata.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
proc_general_test.go proc: change memCache to delay reading 2018-04-23 10:13:21 -07:00
proc_linux_test.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
proc_test.go proc: allow function calls to appear inside an expression (#1503) 2019-05-09 08:29:58 -07:00
proc_unix_test.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
proc.go proc: allow function calls to appear inside an expression (#1503) 2019-05-09 08:29:58 -07:00
registers_amd64.go proc/gdbserial: do not return floating point regs when not requested (#1497) 2019-02-26 08:53:45 -08:00
registers.go proc/gdbserial: do not return floating point regs when not requested (#1497) 2019-02-26 08:53:45 -08:00
scope_test.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
stack.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
threads.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
types.go proc: support debugging plugins (#1414) 2019-05-08 14:06:38 -07:00
variable_test.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
variables.go More Function Calls, parts 2 (#1504) 2019-05-30 08:08:37 -07:00