• Russ Cox's avatar
    runtime: change top-most return PC from goexit to goexit+PCQuantum · a5a07331
    Russ Cox authored
    If you get a stack of PCs from Callers, it would be expected
    that every PC is immediately after a call instruction, so to find
    the line of the call, you look up the line for PC-1.
    CL 163550043 now explicitly documents that.
    
    The most common exception to this is the top-most return PC
    on the stack, which is the entry address of the runtime.goexit
    function. Subtracting 1 from that PC will end up in a different
    function entirely.
    
    To remove this special case, make the top-most return PC
    goexit+PCQuantum and then implement goexit in assembly
    so that the first instruction can be skipped.
    
    Fixes #7690.
    
    LGTM=r
    R=r
    CC=golang-codereviews
    https://golang.org/cl/170720043
    a5a07331
Name
Last commit
Last update
..
cgo Loading commit data...
debug Loading commit data...
pprof Loading commit data...
race Loading commit data...
Makefile Loading commit data...
alg.go Loading commit data...
append_test.go Loading commit data...
arch_386.go Loading commit data...
arch_386.h Loading commit data...
arch_amd64.go Loading commit data...
arch_amd64.h Loading commit data...
arch_amd64p32.go Loading commit data...
arch_amd64p32.h Loading commit data...
arch_arm.go Loading commit data...
arch_arm.h Loading commit data...
asm.s Loading commit data...
asm_386.s Loading commit data...
asm_amd64.s Loading commit data...
asm_amd64p32.s Loading commit data...
asm_arm.s Loading commit data...
atomic.go Loading commit data...
atomic_386.c Loading commit data...
atomic_amd64x.c Loading commit data...
atomic_arm.go Loading commit data...
cgocall.go Loading commit data...
cgocall.h Loading commit data...
cgocallback.go Loading commit data...
chan.go Loading commit data...
chan.h Loading commit data...
chan_test.go Loading commit data...
closure_test.go Loading commit data...
compiler.go Loading commit data...
complex.go Loading commit data...
complex_test.go Loading commit data...
cpuprof.go Loading commit data...
crash_cgo_test.go Loading commit data...
crash_test.go Loading commit data...
debug.go Loading commit data...
defs.c Loading commit data...
defs1_linux.go Loading commit data...
defs2_linux.go Loading commit data...
defs_android_arm.h Loading commit data...
defs_arm_linux.go Loading commit data...
defs_darwin.go Loading commit data...
defs_darwin_386.h Loading commit data...
defs_darwin_amd64.h Loading commit data...
defs_dragonfly.go Loading commit data...
defs_dragonfly_386.h Loading commit data...
defs_dragonfly_amd64.h Loading commit data...
defs_freebsd.go Loading commit data...
defs_freebsd_386.h Loading commit data...
defs_freebsd_amd64.h Loading commit data...
defs_freebsd_arm.h Loading commit data...
defs_linux.go Loading commit data...
defs_linux_386.h Loading commit data...
defs_linux_amd64.h Loading commit data...
defs_linux_arm.h Loading commit data...
defs_nacl_386.h Loading commit data...
defs_nacl_amd64p32.h Loading commit data...
defs_nacl_arm.h Loading commit data...
defs_netbsd.go Loading commit data...
defs_netbsd_386.go Loading commit data...
defs_netbsd_386.h Loading commit data...
defs_netbsd_amd64.go Loading commit data...
defs_netbsd_amd64.h Loading commit data...
defs_netbsd_arm.go Loading commit data...
defs_netbsd_arm.h Loading commit data...
defs_openbsd.go Loading commit data...
defs_openbsd_386.h Loading commit data...
defs_openbsd_amd64.h Loading commit data...
defs_plan9_386.h Loading commit data...
defs_plan9_amd64.h Loading commit data...
defs_solaris.go Loading commit data...
defs_solaris_amd64.go Loading commit data...
defs_solaris_amd64.h Loading commit data...
defs_windows.go Loading commit data...
defs_windows_386.h Loading commit data...
defs_windows_amd64.h Loading commit data...
env_plan9.go Loading commit data...
env_posix.go Loading commit data...
error.go Loading commit data...
export_futex_test.go Loading commit data...
export_test.go Loading commit data...
extern.go Loading commit data...
float.c Loading commit data...
funcdata.h Loading commit data...
futex_test.go Loading commit data...
gc_test.go Loading commit data...
gcinfo_test.go Loading commit data...
hash_test.go Loading commit data...
hashmap.go Loading commit data...
hashmap_fast.go Loading commit data...
heapdump.c Loading commit data...
iface.go Loading commit data...
iface_test.go Loading commit data...
lfstack.c Loading commit data...
lfstack_test.go Loading commit data...
lock_futex.go Loading commit data...
lock_sema.go Loading commit data...
malloc.c Loading commit data...
malloc.go Loading commit data...
malloc.h Loading commit data...
malloc_test.go Loading commit data...
map_test.go Loading commit data...
mapspeed_test.go Loading commit data...
mcache.c Loading commit data...
mcentral.c Loading commit data...
mem.go Loading commit data...
mem_darwin.c Loading commit data...
mem_dragonfly.c Loading commit data...
mem_freebsd.c Loading commit data...
mem_linux.c Loading commit data...
mem_nacl.c Loading commit data...
mem_netbsd.c Loading commit data...
mem_openbsd.c Loading commit data...
mem_plan9.c Loading commit data...
mem_solaris.c Loading commit data...
mem_windows.c Loading commit data...
memclr_386.s Loading commit data...
memclr_amd64.s Loading commit data...
memclr_arm.s Loading commit data...
memclr_plan9_386.s Loading commit data...
memclr_plan9_amd64.s Loading commit data...
memmove_386.s Loading commit data...
memmove_amd64.s Loading commit data...
memmove_arm.s Loading commit data...
memmove_linux_amd64_test.go Loading commit data...
memmove_nacl_amd64p32.s Loading commit data...
memmove_plan9_386.s Loading commit data...
memmove_plan9_amd64.s Loading commit data...
memmove_test.go Loading commit data...
mfinal_test.go Loading commit data...
mfixalloc.c Loading commit data...
mgc0.c Loading commit data...
mgc0.go Loading commit data...
mgc0.h Loading commit data...
mheap.c Loading commit data...
mknacl.sh Loading commit data...
mprof.go Loading commit data...
msize.c Loading commit data...
netpoll.go Loading commit data...
netpoll_epoll.go Loading commit data...
netpoll_kqueue.go Loading commit data...
netpoll_nacl.go Loading commit data...
netpoll_solaris.c Loading commit data...
netpoll_stub.c Loading commit data...
netpoll_windows.c Loading commit data...
noasm_arm.go Loading commit data...
norace_test.go Loading commit data...
os_android.c Loading commit data...
os_android.h Loading commit data...
os_darwin.c Loading commit data...
os_darwin.go Loading commit data...
os_darwin.h Loading commit data...
os_dragonfly.c Loading commit data...
os_dragonfly.go Loading commit data...
os_dragonfly.h Loading commit data...
os_freebsd.c Loading commit data...
os_freebsd.go Loading commit data...
os_freebsd.h Loading commit data...
os_freebsd_arm.c Loading commit data...
os_linux.c Loading commit data...
os_linux.go Loading commit data...
os_linux.h Loading commit data...
os_linux_386.c Loading commit data...
os_linux_arm.c Loading commit data...
os_nacl.c Loading commit data...
os_nacl.go Loading commit data...
os_nacl.h Loading commit data...
os_nacl_arm.c Loading commit data...
os_netbsd.c Loading commit data...
os_netbsd.go Loading commit data...
os_netbsd.h Loading commit data...
os_netbsd_386.c Loading commit data...
os_netbsd_amd64.c Loading commit data...
os_netbsd_arm.c Loading commit data...
os_openbsd.c Loading commit data...
os_openbsd.go Loading commit data...
os_openbsd.h Loading commit data...
os_plan9.c Loading commit data...
os_plan9.go Loading commit data...
os_plan9.h Loading commit data...
os_plan9_386.c Loading commit data...
os_plan9_amd64.c Loading commit data...
os_solaris.c Loading commit data...
os_solaris.go Loading commit data...
os_solaris.h Loading commit data...
os_windows.c Loading commit data...
os_windows.go Loading commit data...
os_windows.h Loading commit data...
os_windows_386.c Loading commit data...
os_windows_386.go Loading commit data...
os_windows_amd64.c Loading commit data...
os_windows_amd64.go Loading commit data...
panic.c Loading commit data...
panic.go Loading commit data...
parfor.c Loading commit data...
parfor_test.go Loading commit data...
print1.go Loading commit data...
proc.c Loading commit data...
proc.go Loading commit data...
proc_test.go Loading commit data...
race.c Loading commit data...
race.go Loading commit data...
race.h Loading commit data...
race0.go Loading commit data...
race_amd64.s Loading commit data...
rdebug.go Loading commit data...
rt0_android_arm.s Loading commit data...
rt0_darwin_386.s Loading commit data...
rt0_darwin_amd64.s Loading commit data...
rt0_dragonfly_386.s Loading commit data...
rt0_dragonfly_amd64.s Loading commit data...
rt0_freebsd_386.s Loading commit data...
rt0_freebsd_amd64.s Loading commit data...
rt0_freebsd_arm.s Loading commit data...
rt0_linux_386.s Loading commit data...
rt0_linux_amd64.s Loading commit data...
rt0_linux_arm.s Loading commit data...
rt0_nacl_386.s Loading commit data...
rt0_nacl_amd64p32.s Loading commit data...
rt0_nacl_arm.s Loading commit data...
rt0_netbsd_386.s Loading commit data...
rt0_netbsd_amd64.s Loading commit data...
rt0_netbsd_arm.s Loading commit data...
rt0_openbsd_386.s Loading commit data...
rt0_openbsd_amd64.s Loading commit data...
rt0_plan9_386.s Loading commit data...
rt0_plan9_amd64.s Loading commit data...
rt0_solaris_amd64.s Loading commit data...
rt0_windows_386.s Loading commit data...
rt0_windows_amd64.s Loading commit data...
rune.go Loading commit data...
runtime-gdb.py Loading commit data...
runtime.c Loading commit data...
runtime.go Loading commit data...
runtime.h Loading commit data...
runtime_linux_test.go Loading commit data...
runtime_test.go Loading commit data...
runtime_unix_test.go Loading commit data...
select.go Loading commit data...
sema.go Loading commit data...
signal.c Loading commit data...
signal_386.c Loading commit data...
signal_amd64x.c Loading commit data...
signal_android_386.h Loading commit data...
signal_android_arm.h Loading commit data...
signal_arm.c Loading commit data...
signal_darwin_386.h Loading commit data...
signal_darwin_amd64.h Loading commit data...
signal_dragonfly_386.h Loading commit data...
signal_dragonfly_amd64.h Loading commit data...
signal_freebsd_386.h Loading commit data...
signal_freebsd_amd64.h Loading commit data...
signal_freebsd_arm.h Loading commit data...
signal_linux_386.h Loading commit data...
signal_linux_amd64.h Loading commit data...
signal_linux_arm.h Loading commit data...
signal_nacl_386.h Loading commit data...
signal_nacl_amd64p32.h Loading commit data...
signal_nacl_arm.h Loading commit data...
signal_netbsd_386.h Loading commit data...
signal_netbsd_amd64.h Loading commit data...
signal_netbsd_arm.h Loading commit data...
signal_openbsd_386.h Loading commit data...
signal_openbsd_amd64.h Loading commit data...
signal_solaris_amd64.h Loading commit data...
signal_unix.c Loading commit data...
signal_unix.go Loading commit data...
signal_unix.h Loading commit data...
signals_android.h Loading commit data...
signals_darwin.h Loading commit data...
signals_dragonfly.h Loading commit data...
signals_freebsd.h Loading commit data...
signals_linux.h Loading commit data...
signals_nacl.h Loading commit data...
signals_netbsd.h Loading commit data...
signals_openbsd.h Loading commit data...
signals_plan9.h Loading commit data...
signals_solaris.h Loading commit data...
signals_windows.h Loading commit data...
sigpanic_unix.go Loading commit data...
sigqueue.go Loading commit data...
slice.go Loading commit data...
softfloat64.go Loading commit data...
softfloat64_test.go Loading commit data...
softfloat_arm.c Loading commit data...
sqrt.go Loading commit data...
stack.c Loading commit data...
stack.go Loading commit data...
stack.h Loading commit data...
stack_test.go Loading commit data...
string.c Loading commit data...
string.go Loading commit data...
string_test.go Loading commit data...
stubs.go Loading commit data...
symtab.go Loading commit data...
symtab_test.go Loading commit data...
sys_arm.c Loading commit data...
sys_darwin_386.s Loading commit data...
sys_darwin_amd64.s Loading commit data...
sys_dragonfly_386.s Loading commit data...
sys_dragonfly_amd64.s Loading commit data...
sys_freebsd_386.s Loading commit data...
sys_freebsd_amd64.s Loading commit data...
sys_freebsd_arm.s Loading commit data...
sys_linux_386.s Loading commit data...
sys_linux_amd64.s Loading commit data...
sys_linux_arm.s Loading commit data...
sys_nacl_386.s Loading commit data...
sys_nacl_amd64p32.s Loading commit data...
sys_nacl_arm.s Loading commit data...
sys_netbsd_386.s Loading commit data...
sys_netbsd_amd64.s Loading commit data...
sys_netbsd_arm.s Loading commit data...
sys_openbsd_386.s Loading commit data...
sys_openbsd_amd64.s Loading commit data...
sys_plan9_386.s Loading commit data...
sys_plan9_amd64.s Loading commit data...
sys_solaris_amd64.s Loading commit data...
sys_windows_386.s Loading commit data...
sys_windows_amd64.s Loading commit data...
sys_x86.c Loading commit data...
syscall_nacl.h Loading commit data...
syscall_solaris.c Loading commit data...
syscall_solaris.go Loading commit data...
syscall_windows.go Loading commit data...
syscall_windows_test.go Loading commit data...
thunk.s Loading commit data...
thunk_solaris_amd64.s Loading commit data...
thunk_windows.s Loading commit data...
time.go Loading commit data...
tls_arm.s Loading commit data...
traceback.go Loading commit data...
type.h Loading commit data...
typekind.go Loading commit data...
typekind.h Loading commit data...
vdso_linux_amd64.c Loading commit data...
vlop_386.s Loading commit data...
vlop_arm.s Loading commit data...
vlop_arm_test.go Loading commit data...
vlrt.c Loading commit data...
vlrt.go Loading commit data...