aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal
diff options
context:
space:
mode:
authorMichel Lespinasse <walken@google.com>2016-03-17 07:00:33 -0700
committerMichel Lespinasse <walken@google.com>2016-03-29 02:18:56 +0000
commit79688ca58f59a65eee324694fd8a559dae8af149 (patch)
tree34397cb080d24b7ebe4ca4f47aced111ea9d8d44 /src/cmd/internal
parentf00bbd5f818f0a6b5b2fcf15422ad7fc4594225f (diff)
downloadgo-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.go2
-rw-r--r--src/cmd/internal/obj/link.go1
-rw-r--r--src/cmd/internal/objfile/goobj.go2
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'