From 79688ca58f59a65eee324694fd8a559dae8af149 Mon Sep 17 00:00:00 2001 From: Michel Lespinasse Date: Thu, 17 Mar 2016 07:00:33 -0700 Subject: 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 --- src/cmd/internal/goobj/read.go | 2 ++ src/cmd/internal/obj/link.go | 1 + src/cmd/internal/objfile/goobj.go | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/cmd/internal') 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' -- cgit v1.3-5-g9baa