• 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
asm_amd64.s 41.3 KB