delve/_fixtures
Alessandro Arzilli c30a333f7b proc: allow function calls to appear inside an expression (#1503)
The initial implementation of the 'call' command required the
function call to be the root expression, i.e. something like:

	double(3) + 1

was not allowed, because the root expression was the binary operator
'+', not the function call.

With this change expressions like the one above and others are
allowed.

This is the first step necessary to implement nested function calls
(where the result of a function call is used as argument to another
function call).

This is implemented by replacing proc.CallFunction with
proc.EvalExpressionWithCalls. EvalExpressionWithCalls will run
proc.(*EvalScope).EvalExpression in a different goroutine. This
goroutine, the 'eval' goroutine, will communicate with the main
goroutine of the debugger by means of two channels: continueRequest
and continueCompleted.

The eval goroutine evaluates the expression recursively, when
a function call is encountered it takes care of setting up the
function call on the target program and writes a request to the
continueRequest channel, this causes the 'main' goroutine to restart
the target program by calling proc.Continue.

Whenever Continue encounters a breakpoint that belongs to the
function call injection protocol (runtime.debugCallV1 and associated
functions) it writes to continueCompleted which resumes the 'eval'
goroutine.

The 'eval' goroutine takes care of implementing the function call
injection protocol.

When the expression is fully evaluated the 'eval' goroutine will
write a special message to 'continueRequest' signaling that the
expression evaluation is terminated which will cause Continue to
return to the user.

Updates #119
2019-05-09 08:29:58 -07:00
..
buildtest dlv: bugfix: Allow quoting in build flags argument (#639) 2016-09-25 08:26:59 -07:00
cgostacktest tests: minor fixes for Go 1.12 2018-11-20 12:57:25 -08:00
fputest proc/core: Make TestCoreFpTest less flaky 2018-03-20 09:34:05 -07:00
internal proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
nodisasm proc: fix next when disassembly fails 2018-08-29 16:11:18 -07:00
nomaindir proc: detect when Launching non-executable files 2016-06-30 09:39:18 +02:00
plugin1 proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
plugin2 proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
binarytrees.go Improve stacktraces (#721) 2017-02-08 14:14:57 +01:00
bpcountstest.go proc: Continue does not work with breakpoints set on NOP (OSX) 2016-01-09 08:44:28 +01:00
bpfile terminal: Implements init file and source command 2015-10-04 10:32:38 -07:00
break.go tests: Add test for #149, fixed TestNextGeneral on tip 2016-02-28 16:44:22 -08:00
callme.go Go 1.8 compatibility (part 2) (#667) 2017-02-07 13:07:18 -08:00
cgotest.go dwarf/line: Support for parsing multiple file tables 2015-08-29 14:51:27 -05:00
clientdo.go proc,prettyprint: guard against autodereferenced escaped pointers (#1077) 2018-01-19 15:50:28 +01:00
consts.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
continuetestprog.go Underscore fixtures dir to ignore during test run 2014-06-09 10:55:18 -05:00
coreemptystring.go proc: fix reading of empty strings in core files 2018-03-08 11:58:03 -08:00
debug_line_benchmark_data pkg/dwarf/line: improve performance 2017-11-03 20:57:04 +01:00
decllinetest.go pkg/proc: use DW_AT_decl_line to determine var visibility 2017-12-13 12:18:18 -08:00
defercall.go proc: bugfix: Next and normal calls to deferred function 2016-09-27 09:37:26 +02:00
deferstack.go proc,service,terminal: eval expressions in the scope of a deferred call 2018-10-16 08:40:07 -07:00
dotpackagesiface.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
dwzcompression.go proc_test: implement test for DWZ compressed DWARF 2018-05-23 13:59:45 -07:00
exit.init cmd/dlv,terminal: fix accept-multiclient behavior 2018-12-03 09:58:29 -08:00
fncall.go proc: allow function calls to appear inside an expression (#1503) 2019-05-09 08:29:58 -07:00
goroutinestackprog.go Extend the "frame" command to set the current frame. (#1110) 2018-03-22 10:02:15 -07:00
increment.go proc: next, stepout should work on recursive goroutines (#831) 2017-05-16 11:23:33 -07:00
integrationprog.go Launch prog from cli, also exit cleanly 2014-08-23 08:20:56 -05:00
is sue239.go proc: bugfix: status does not work with programs containing spaces 2015-10-04 12:01:09 -07:00
issue262.go proc: Continue does not work with breakpoints set on NOP (OSX) 2016-01-09 08:44:28 +01:00
issue305.go proc: bugfix: clearing temp breakpoints 2016-01-16 09:13:15 +01:00
issue332.go proc: bugs setting next breakpoints 2016-02-11 08:28:07 +01:00
issue384.go proc/variables: crash while reading unintialized variable 2016-01-31 20:14:17 +01:00
issue387.go terminal,service: auto-continue during next and step (#448) 2016-04-24 16:20:02 -07:00
issue406.go all: Spelling 2018-03-20 11:05:35 +01:00
issue419.go debugger: bugfix: make delve API thread safe 2016-02-24 17:49:30 -08:00
issue528.go service/test: Added test for issue #528 2016-05-18 09:07:19 +02:00
issue561.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
issue573.go proc: Renamed temp breakpoints to internal breakpoints 2016-09-30 08:35:29 +02:00
issue594.go proc: changed windows backend to deal with simultaneous breakpoints (#598) 2016-10-21 21:51:34 -07:00
issue664.go Go 1.8 compatibility (part 2) (#667) 2017-02-07 13:07:18 -08:00
issue683.go Fix for #614 and #683 (#687) 2017-01-09 15:21:54 -08:00
issue871.go proc: auto-dereference local variables that escape to the heap 2017-08-01 11:20:25 -06:00
issue877.go Pass LD_/DYLD_ env vars to debugserver (fixes #877) (#910) 2017-07-18 12:57:41 -06:00
issue951.go proc: Flag shadowed arguments as shadowed 2018-04-23 10:13:21 -07:00
issue1101.go proc/native: fix race condition between Halt and process death (linux) 2018-03-06 09:06:19 -08:00
issue1264.go proc: allow breakpoint conditions to contain a single boolean variable 2018-07-09 17:25:47 -07:00
issue1374.go proc: Continue should always work after CallFunction 2018-10-17 09:07:36 -07:00
issue1432.go proc: make structMember work on pointer Variables created through cast 2018-12-03 10:00:22 -08:00
issue1469.go proc: workarounds for runtime.clone (#1470) 2019-02-26 09:22:33 -08:00
issue1531.go proc: Update map reading code for Go 1.12 (#1532) 2019-04-26 10:23:43 -07:00
livetestprog.go (Mostly) working multithreaded tracing implementation 2014-10-25 08:59:22 -05:00
locationsprog2.go Disassemble command 2016-02-11 16:59:07 -08:00
locationsprog3.go debugger/locations: prioritize exact matches of function names (#651) 2016-10-21 22:04:03 -07:00
locationsprog.go debugger/locations: if locspec isn't found try interpreting it as expr (#858) 2017-07-26 12:52:51 -06:00
locationsUpperCase.go Fix path lookup logic on Windows. 2016-02-05 14:45:27 -08:00
loopprog.go Inject SIGTRAP for manual stop 2015-07-07 15:55:22 -05:00
math.go Go 1.7 compatibility (#524) 2016-05-29 12:20:09 -07:00
nextcond.go proc: next should not skip lines with conditional bps 2017-11-20 11:25:35 -08:00
notify-v2.go terminal: bugfix: deref of nil SelectedGoroutine switching goroutines (#829) 2017-05-08 11:16:14 -07:00
panic.go proc: implement target.Interface for core files 2017-04-18 13:25:11 -07:00
parallel_next.go command (next): Improvements for parallel programs 2015-08-20 09:32:59 -05:00
pkgrenames.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
plugintest2.go proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
plugintest.go proc,proc/native,proc/gdbserial: initial plugin support (#1413) 2019-03-20 10:32:51 -07:00
pr1055.go Remove limitation of exit notification only for specific API calls 2018-01-02 11:28:43 -08:00
restartargs.go command/terminal: allow restart to change process args (#1060) 2018-01-18 14:16:11 -08:00
retstack.go stack command: -full flag prints local variables and arguments of all the functions on the stack trace 2015-09-18 08:34:21 +02:00
scopeescapevareval.go proc: lexical block support 2017-08-01 11:20:25 -06:00
scopetest.go pkg/prog/test: add flag to run target with -race flag 2017-11-15 08:51:57 -08:00
sigchldprog.go Fix: Improve handling of soft signals on darwin 2015-08-11 19:20:25 -05:00
sleep.go proc/core: add support for windows minidumps 2018-11-21 12:17:16 -08:00
stacktraceprog.go Implement stack command 2015-06-20 15:29:33 -05:00
stepoutret.go proc,service: display return values when stepping out of a function 2018-06-12 11:35:56 +02:00
testargs.go proc: Fix command-line arguments on Windows (#501) 2016-04-21 14:20:38 -07:00
testdeadlock.go proc: catch fatal runtime errors (#1502) 2019-02-27 14:28:25 -08:00
testenv.go proc/gdbserial: pass environment variables to target (#820) 2017-05-04 10:46:45 -07:00
testinline.go proc,dwarf/line: support is_stmt and prologue_end flags 2018-06-11 11:09:02 -07:00
testnextdefer.go Improve 'next': return into deferred func 2015-05-09 12:44:38 -05:00
testnextnethttp.go proc: add test for attach/detach, fix detach (#773) 2017-03-28 09:30:27 -07:00
testnextprog.go Correctly handle hardware breakpoints across threads 2015-06-11 22:46:06 -05:00
testprog.go Fix: Linux - call wait4 on thread grp leader is broken 2015-06-26 22:10:09 -05:00
testreturnaddress.go Fix: Handle inability to find return addr 2015-08-10 10:45:33 -05:00
testruntimebreakpoint.go Handle runtime.Breakpoint 2015-04-25 14:13:35 -05:00
testshadow.go proc: lexical block support 2017-08-01 11:20:25 -06:00
teststep.go proc: step now goes to next line, including funcs 2016-01-24 15:48:36 -08:00
teststepconcurrent.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
teststepprog.go proc: Implement Step using Continue 2016-09-27 09:37:33 +02:00
testthreads.go Introduce JSON-RPC service 2015-06-21 21:11:30 -05:00
testvariables2.go pkg/proc: extend conversion about string for array/str 2018-10-15 09:27:39 -07:00
testvariables.go Changed api.Variable to have a machine readable value 2015-10-28 18:28:58 -07:00
traceperf.go Trace optimizations (#695) 2017-02-07 13:08:11 -08:00
workdir.go Flag to set working directory (#650) 2016-11-01 12:58:42 -07:00