delve/pkg/proc/native
aarzilli 438e51f330 proc: replace SavedRegisters interface with a Copy method
Fncall.go was written with the assumption that the object returned by
proc.Thread.Registers does not change after we call
proc.Thread.SetPC/etc.

This is true for the native backend but not for gdbserial. I had
anticipated this problem and introduced the Save/SavedRegisters
mechanism during the first implementation of fncall.go but that's
insufficient.

Instead:

1. clarify that the object returned by proc.Thread.Registers could
   change when the CPU registers are modified.
2. add a Copy method to Registers that returns a copy of the registers
   that are guaranteed not to change when the CPU registers change.
3. remove the Save/SavedRegisters mechanism.

This solution leaves us the option, in the future, to cache the output
of proc.(Thread).Registers, avoiding a system call every time it's
called.
2018-08-30 15:48:10 -07:00
..
exc_user_darwin.c proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
exc.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
exec_darwin.c proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
exec_darwin.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
mach_exc_user_darwin.c proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
mach_exc.defs proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
mach_exc.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
proc_darwin.c proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
proc_darwin.go proc,service: display return values when stepping out of a function 2018-06-12 11:35:56 +02:00
proc_darwin.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
proc_linux.go proc/native,proc/gdbserial: ignore SIGTTIN, SIGTTOU when fg'ing target 2018-07-31 12:05:54 -07:00
proc_windows.go proc/native,proc/gdbserial: let target access terminal 2018-05-18 09:53:29 -07:00
proc.go proc,terminal,service: let headless instances run without connected clients 2018-06-26 10:32:40 -07:00
ptrace_darwin.go proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
ptrace_linux.go *: function call injection for go 1.11 2018-07-13 13:37:54 -07:00
registers_darwin_amd64.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
registers_linux_amd64.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
registers_windows_amd64.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
syscall_windows_amd64.go proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
syscall_windows.go proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
threads_darwin.c proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
threads_darwin.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
threads_darwin.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
threads_linux.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
threads_windows.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
threads.go proc: replace SavedRegisters interface with a Copy method 2018-08-30 15:48:10 -07:00
zsyscall_windows.go proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00