]> Cypherpunks repositories - gostls13.git/commit
[dev.link] cmd/link: initial support for linker-materialized external symbols
authorThan McIntosh <thanm@google.com>
Wed, 11 Dec 2019 18:39:39 +0000 (13:39 -0500)
committerThan McIntosh <thanm@google.com>
Wed, 18 Dec 2019 14:23:48 +0000 (14:23 +0000)
commit07914eda407a6197dc628fb20cf7d9b57b943518
tree5598ba7a54856ac12d541a2a4d4cfa33427ef69a
parent664accc7be901bca737ff8d01377adf36704eb27
[dev.link] cmd/link: initial support for linker-materialized external symbols

Create loader infrastructure for constructing the payloads of external
symbols from scratch, as opposed to passing in a sym.Symbol object
containing the payload.

The general idea is that clients can use the loader to create new
external Sym's using loader.AddExtSym, and then can add
relocations/data to the new sym with symbol builder interfaces (to be
provided in an subsequent patch), as opposed to having to use
sym.Symbol.

This change preserves compatibility with the old way of doing things
(passing in sym.Symbol) via a new loader.InstallSym method. If a
client invokes this method for a specific Sym, then the loader keeps
track of this fact and uses the sym.Symbol as the backing store instead.

Also included is a small unit test for the new interfaces -- not clear
whether this really needs to be kept around long term... it was mainly
useful during initial bringup.

Change-Id: If8ab15df7b64636e56b317155dfe6d7cdfe23b71
Reviewed-on: https://go-review.googlesource.com/c/go/+/207606
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/loader/loader.go
src/cmd/link/internal/loader/loader_test.go [new file with mode: 0644]