• Russ Cox's avatar
    cmd/5l, runtime: make ARM integer division profiler-friendly · b0db472e
    Russ Cox authored
    The implementation of division constructed non-standard
    stack frames that could not be handled by the traceback
    routines.
    
    CL 13239052 left the frames non-standard but fixed them
    for the specific case of a divide-by-zero panic.
    A profiling signal can arrive at any time, so that fix
    is not sufficient.
    
    Change the division to store the extra argument in the M struct
    instead of in a new stack slot. That keeps the frames bog standard
    at all times.
    
    Also fix a related bug in the traceback code: when starting
    a traceback, the LR register should be ignored if the current
    function has already allocated its stack frame and saved the
    original LR on the stack. The stack copy should be used, as the
    LR register may have been modified.
    
    Combined, these make the torture test from issue 6681 pass.
    
    Fixes #6681.
    
    R=golang-dev, r, josharian
    CC=golang-dev
    https://golang.org/cl/19810043
    b0db472e
noop.c 15.1 KB