aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/objabi
diff options
context:
space:
mode:
authorDavid Chase <drchase@google.com>2018-02-13 17:39:38 -0500
committerDavid Chase <drchase@google.com>2018-04-04 22:14:29 +0000
commitdead03b7947c79112ef6c2a91843d7b10e5ebcfe (patch)
treec86730b5e32fe6bac28ab9d3d94c5b56ee8f1f11 /src/cmd/internal/objabi
parent619679a3971fad8ff4aa231d7942c95579ceff23 (diff)
downloadgo-dead03b7947c79112ef6c2a91843d7b10e5ebcfe.tar.xz
cmd/link: process is_stmt data into dwarf line tables
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: Heschi Kreinick <heschi@google.com>
Diffstat (limited to 'src/cmd/internal/objabi')
-rw-r--r--src/cmd/internal/objabi/symkind.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cmd/internal/objabi/symkind.go b/src/cmd/internal/objabi/symkind.go
index ea180d0bf8..b95a0d3c70 100644
--- a/src/cmd/internal/objabi/symkind.go
+++ b/src/cmd/internal/objabi/symkind.go
@@ -34,6 +34,7 @@ package objabi
type SymKind uint8
// Defined SymKind values.
+// These are used to index into cmd/link/internal/sym/AbiSymKindToSymKind
//
// TODO(rsc): Give idiomatic Go names.
//go:generate stringer -type=SymKind
@@ -58,4 +59,7 @@ const (
SDWARFINFO
SDWARFRANGE
SDWARFLOC
+ SDWARFMISC
+ // Update cmd/link/internal/sym/AbiSymKindToSymKind for new SymKind values.
+
)