• Michael Munday's avatar
    cmd/link, runtime: mark goexit as the top of the call stack · aafe2573
    Michael Munday authored
    This CL adds a new attribute, TOPFRAME, which can be used to mark
    functions that should be treated as being at the top of the call
    stack. The function `runtime.goexit` has been marked this way on
    architectures that use a link register.
    
    This will stop programs that use DWARF to unwind the call stack
    from unwinding past `runtime.goexit` on architectures that use a
    link register. For example, it eliminates "corrupt stack?"
    warnings when generating a backtrace that hits `runtime.goexit`
    in GDB on s390x.
    
    Similar code should be added for non-link-register architectures
    (i.e. amd64, 386). They mark the top of the call stack slightly
    differently to link register architectures so I haven't added
    that code (they need to mark "rip" as undefined).
    
    Fixes #24385.
    
    Change-Id: I15b4c69ac75b491daa0acf0d981cb80eb06488de
    Reviewed-on: https://go-review.googlesource.com/c/go/+/169726
    Run-TryBot: Michael Munday <mike.munday@ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
    aafe2573