go/src/cmd/compile/internal/noder
Matthew Dempsky 54fe57bc22 [dev.typeparams] cmd/compile: record writer's stack at export data sync points
This CL extends the unified export data format's existing sync
mechanism to save writer stacks, controlled by the -d=syncframes debug
flag. This allows readers to provide more details when reporting
desync errors, which should simplify development of the data format
and the various reader/writer implementations.

For example, CL 328051 updated reader and writer, but missed making a
similar change to the linker (fix in CL 328054). Re-reviewing the CL
in isolation after the failure, it was not immediately obvious what
was going wrong. But the pair of stack traces below identifies exactly
what happened: it should have updated linker.relocFuncExt to write out
the new sync marker too.

```
data sync error: package "internal/abi", section 6, index 4, offset 536

found UseReloc, written at:
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/encoder.go:221: (*encoder).reloc +0x44
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/linker.go:214: (*linker).relocFuncExt +0x580
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/linker.go:233: (*linker).relocTypeExt +0x234
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/linker.go:161: (*linker).relocObj +0x2198
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/linker.go:64: (*linker).relocIdx +0x196

expected ImplicitTypes, reading at:
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/reader.go:796: (*reader).implicitTypes +0x36
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/reader.go:810: (*reader).addBody +0x81
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/reader.go:727: (*reader).funcExt +0x542
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/reader.go:651: (*reader).method +0x324
	/home/mdempsky/wd/go/src/cmd/compile/internal/noder/reader.go:557: (*pkgReader).objIdx +0x2704
```

Change-Id: I911193edd2a965f81b7459f15fb613a773584685
Reviewed-on: https://go-review.googlesource.com/c/go/+/328909
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
2021-06-18 06:33:12 +00:00
..
codes.go [dev.typeparams] cmd/compile: unified IR construction 2021-06-15 20:35:54 +00:00
decl.go [dev.typeparams] cmd/compile: refactor import reading 2021-06-05 23:28:52 +00:00
decoder.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
encoder.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
export.go [dev.typeparams] cmd/compile: scaffolding for export data experiments 2021-06-12 00:11:57 +00:00
expr.go [dev.typeparams] cmd/compile: simplify NewClosureFunc 2021-06-12 15:17:14 +00:00
frames_go1.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
frames_go17.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
func.go
helpers.go [dev.typeparams] cmd/compile: introduce IsTypeParam() helper 2021-06-07 19:51:26 +00:00
import.go [dev.typeparams] cmd/compile: scaffolding for export data experiments 2021-06-12 00:11:57 +00:00
irgen.go [dev.typeparams] cmd/compile: add "check" field to noder.gcimports 2021-06-11 14:48:07 +00:00
lex.go internal/buildcfg: move build configuration out of cmd/internal/objabi 2021-04-16 19:20:53 +00:00
lex_test.go
linker.go [dev.typeparams] cmd/compile: fix missing sync implicit types 2021-06-16 16:30:37 +00:00
noder.go [dev.typeparams] cmd/compile: add -d=unified flag to enable unified IR 2021-06-15 22:29:54 +00:00
object.go [dev.typeparams] cmd/compile: simplify ~r/~b naming 2021-05-26 23:50:32 +00:00
posmap.go
quirks.go [dev.typeparams] cmd/compile: unified IR construction 2021-06-15 20:35:54 +00:00
reader.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
reader2.go [dev.typeparams] cmd/compile: unified IR construction 2021-06-15 20:35:54 +00:00
reloc.go [dev.typeparams] cmd/compile: unified IR construction 2021-06-15 20:35:54 +00:00
scopes.go
sizes.go cmd/compile: fix gcSizes.Sizeof for a zero-sized struct 2021-04-06 13:01:37 +00:00
stencil.go [dev.typeparams] cmd/compile: simplify NewClosureFunc 2021-06-12 15:17:14 +00:00
stmt.go cmd/compile: fix various small bugs related to type lists 2021-03-30 03:05:45 +00:00
sync.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00
syncmarker_string.go [dev.typeparams] cmd/compile: fix missing sync implicit types 2021-06-16 16:30:37 +00:00
transform.go [dev.typeparams] cmd/compile: allow conversions from type parameter to interface 2021-06-07 19:53:38 +00:00
types.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
unified.go [dev.typeparams] cmd/compile: skip types2 GC test during bootstrapping 2021-06-17 23:14:04 +00:00
validate.go cmd/compile: create/use noder2 transform functions for more node types 2021-03-25 00:06:23 +00:00
writer.go [dev.typeparams] cmd/compile: record writer's stack at export data sync points 2021-06-18 06:33:12 +00:00