• David Chase's avatar
    cmd/link: process is_stmt data into dwarf line tables · dead03b7
    David Chase authored
    To improve debugging, instructions should be annotated with
    DWARF is_stmt.  The DWARF default before was is_stmt=1, and
    to remove "jumpy" stepping the optimizer was tagging
    instructions with a no-position position, which interferes
    with the accuracy of profiling information.  This allows
    that to be corrected, and also allows more "jumpy" positions
    to be annotated with is_stmt=0 (these changes were not made
    for 1.10 because of worries about further messing up
    profiling).
    
    The is_stmt values are placed in a pc-encoded table and
    passed through a symbol derived from the name of the
    function and processed in the linker alongside its
    processing of each function's pc/line tables.
    
    The only change in binary size is in the .debug_line tables
    measured with "objdump -h --section=.debug_line go1.test"
    For go1.test, these are 2614 bytes larger,
    or 0.72% of the size of .debug_line,
    or 0.025% of the file size.
    
    This will increase in proportion to how much the is_stmt
    flag is used (toggled).
    
    Change-Id: Ic1f1aeccff44591ad0494d29e1a0202a3c506a7a
    Reviewed-on: https://go-review.googlesource.com/93664
    Run-TryBot: David Chase <drchase@google.com>
    Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
    dead03b7
Name
Last commit
Last update
..
attribute.go Loading commit data...
library.go Loading commit data...
reloc.go Loading commit data...
segment.go Loading commit data...
symbol.go Loading commit data...
symbols.go Loading commit data...
symkind.go Loading commit data...
symkind_string.go Loading commit data...