aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/objfile.go
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2016-03-14 21:51:09 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2016-03-16 20:40:58 +0000
commitdd2ba0c7a78d333da340bcf00995162252febad7 (patch)
tree7c53c94a6b85434ce687316b0d4c004e47f04cf8 /src/cmd/internal/obj/objfile.go
parent61b9315d3797ff9c007952c5096592542e655472 (diff)
downloadgo-dd2ba0c7a78d333da340bcf00995162252febad7.tar.xz
cmd/internal/obj: remove LSym.Next
Instead, use a slice. Passes toolstash -cmp. Change-Id: I889fdb4ae997416f907522f549b96506be13bec7 Reviewed-on: https://go-review.googlesource.com/20699 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/objfile.go')
-rw-r--r--src/cmd/internal/obj/objfile.go40
1 files changed, 11 insertions, 29 deletions
diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go
index dc64dad6cd..70c2d9d5f9 100644
--- a/src/cmd/internal/obj/objfile.go
+++ b/src/cmd/internal/obj/objfile.go
@@ -130,7 +130,8 @@ func flushplist(ctxt *Link, freeProgs bool) {
// Build list of symbols, and assign instructions to lists.
// Ignore ctxt->plist boundaries. There are no guarantees there,
// and the assemblers just use one big list.
- var curtext, text, etext *LSym
+ var curtext *LSym
+ var text []*LSym
for pl := ctxt.Plist; pl != nil; pl = pl.Link {
var plink *Prog
@@ -180,12 +181,7 @@ func flushplist(ctxt *Link, freeProgs bool) {
log.Fatalf("symbol %s listed multiple times", s.Name)
}
s.Onlist = 1
- if ctxt.Data == nil {
- ctxt.Data = s
- } else {
- ctxt.Edata.Next = s
- }
- s.Next = nil
+ ctxt.Data = append(ctxt.Data, s)
s.Size = p.To.Offset
if s.Type == 0 || s.Type == SXREF {
s.Type = SBSS
@@ -201,7 +197,6 @@ func flushplist(ctxt *Link, freeProgs bool) {
} else if flag&TLSBSS != 0 {
s.Type = STLSBSS
}
- ctxt.Edata = s
continue
case ATEXT:
@@ -220,12 +215,7 @@ func flushplist(ctxt *Link, freeProgs bool) {
log.Fatalf("symbol %s listed multiple times", s.Name)
}
s.Onlist = 1
- if text == nil {
- text = s
- } else {
- etext.Next = s
- }
- etext = s
+ text = append(text, s)
flag := int(p.From3Offset())
if flag&DUPOK != 0 {
s.Dupok = 1
@@ -236,7 +226,6 @@ func flushplist(ctxt *Link, freeProgs bool) {
if flag&REFLECTMETHOD != 0 {
s.ReflectMethod = true
}
- s.Next = nil
s.Type = STEXT
s.Text = p
s.Etext = p
@@ -267,7 +256,7 @@ func flushplist(ctxt *Link, freeProgs bool) {
}
// Add reference to Go arguments for C or assembly functions without them.
- for s := text; s != nil; s = s.Next {
+ for _, s := range text {
if !strings.HasPrefix(s.Name, "\"\".") {
continue
}
@@ -292,7 +281,7 @@ func flushplist(ctxt *Link, freeProgs bool) {
}
// Turn functions into machine code images.
- for s := text; s != nil; s = s.Next {
+ for _, s := range text {
mkfwd(s)
linkpatch(ctxt, s)
if ctxt.Flag_optimize {
@@ -309,14 +298,7 @@ func flushplist(ctxt *Link, freeProgs bool) {
}
// Add to running list in ctxt.
- if text != nil {
- if ctxt.Text == nil {
- ctxt.Text = text
- } else {
- ctxt.Etext.Next = text
- }
- ctxt.Etext = etext
- }
+ ctxt.Text = append(ctxt.Text, text...)
ctxt.Plist = nil
ctxt.Plast = nil
ctxt.Curp = nil
@@ -340,19 +322,19 @@ func Writeobjfile(ctxt *Link, b *Biobuf) {
wrstring(b, "")
// Emit symbol references.
- for s := ctxt.Text; s != nil; s = s.Next {
+ for _, s := range ctxt.Text {
writerefs(ctxt, b, s)
}
- for s := ctxt.Data; s != nil; s = s.Next {
+ for _, s := range ctxt.Data {
writerefs(ctxt, b, s)
}
Bputc(b, 0xff)
// Emit symbols.
- for s := ctxt.Text; s != nil; s = s.Next {
+ for _, s := range ctxt.Text {
writesym(ctxt, b, s)
}
- for s := ctxt.Data; s != nil; s = s.Next {
+ for _, s := range ctxt.Data {
writesym(ctxt, b, s)
}