diff options
| author | Michel Lespinasse <walken@google.com> | 2016-03-17 07:00:33 -0700 |
|---|---|---|
| committer | Michel Lespinasse <walken@google.com> | 2016-03-29 02:18:56 +0000 |
| commit | 79688ca58f59a65eee324694fd8a559dae8af149 (patch) | |
| tree | 34397cb080d24b7ebe4ca4f47aced111ea9d8d44 /src/cmd/internal | |
| parent | f00bbd5f818f0a6b5b2fcf15422ad7fc4594225f (diff) | |
| download | go-79688ca58f59a65eee324694fd8a559dae8af149.tar.xz | |
cmd/link: collect itablinks as a slice in moduledata
See #14874
This change tells the linker to collect all the itablink symbols and
collect them so that moduledata can have a slice of all compiler
generated itabs.
The logic is shamelessly adapted from what is done with typelink symbols.
Change-Id: Ie93b59acf0fcba908a876d506afbf796f222dbac
Reviewed-on: https://go-review.googlesource.com/20889
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/internal')
| -rw-r--r-- | src/cmd/internal/goobj/read.go | 2 | ||||
| -rw-r--r-- | src/cmd/internal/obj/link.go | 1 | ||||
| -rw-r--r-- | src/cmd/internal/objfile/goobj.go | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/internal/goobj/read.go b/src/cmd/internal/goobj/read.go index 6a906a4627..2506f07de2 100644 --- a/src/cmd/internal/goobj/read.go +++ b/src/cmd/internal/goobj/read.go @@ -43,6 +43,7 @@ const ( SRODATA SymKind = obj.SRODATA SFUNCTAB SymKind = obj.SFUNCTAB STYPELINK SymKind = obj.STYPELINK + SITABLINK SymKind = obj.SITABLINK SSYMTAB SymKind = obj.SSYMTAB // TODO: move to unmapped section SPCLNTAB SymKind = obj.SPCLNTAB SELFROSECT SymKind = obj.SELFROSECT @@ -106,6 +107,7 @@ var symKindStrings = []string{ STLSBSS: "STLSBSS", STYPE: "STYPE", STYPELINK: "STYPELINK", + SITABLINK: "SITABLINK", SWINDOWS: "SWINDOWS", SXREF: "SXREF", } diff --git a/src/cmd/internal/obj/link.go b/src/cmd/internal/obj/link.go index 11d451abb2..152a2acea0 100644 --- a/src/cmd/internal/obj/link.go +++ b/src/cmd/internal/obj/link.go @@ -397,6 +397,7 @@ const ( SFUNCTABRELRO STYPELINK + SITABLINK SSYMTAB SPCLNTAB SELFROSECT diff --git a/src/cmd/internal/objfile/goobj.go b/src/cmd/internal/objfile/goobj.go index cf89ebb9e4..46e5f4e866 100644 --- a/src/cmd/internal/objfile/goobj.go +++ b/src/cmd/internal/objfile/goobj.go @@ -41,7 +41,7 @@ func (f *goobjFile) symbols() ([]Sym, error) { switch s.Kind { case goobj.STEXT, goobj.SELFRXSECT: sym.Code = 'T' - case goobj.STYPE, goobj.SSTRING, goobj.SGOSTRING, goobj.SGOFUNC, goobj.SRODATA, goobj.SFUNCTAB, goobj.STYPELINK, goobj.SSYMTAB, goobj.SPCLNTAB, goobj.SELFROSECT: + case goobj.STYPE, goobj.SSTRING, goobj.SGOSTRING, goobj.SGOFUNC, goobj.SRODATA, goobj.SFUNCTAB, goobj.STYPELINK, goobj.SITABLINK, goobj.SSYMTAB, goobj.SPCLNTAB, goobj.SELFROSECT: sym.Code = 'R' case goobj.SMACHOPLT, goobj.SELFSECT, goobj.SMACHO, goobj.SMACHOGOT, goobj.SNOPTRDATA, goobj.SINITARR, goobj.SDATA, goobj.SWINDOWS: sym.Code = 'D' |
