]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link/internal/loader: fix buglet in section handling
authorThan McIntosh <thanm@google.com>
Thu, 23 Apr 2020 12:43:29 +0000 (08:43 -0400)
committerThan McIntosh <thanm@google.com>
Fri, 24 Apr 2020 13:41:20 +0000 (13:41 +0000)
Allow for the possibility that a client could call newExtSym(), then
ask for the section of the new sym before SetSectSym is called on it
(check in SymSect for this case).

Change-Id: I7bd78e7b3b7618943705b616f62ea78c4a1b68d0
Reviewed-on: https://go-review.googlesource.com/c/go/+/229603
Reviewed-by: Jeremy Faller <jeremy@golang.org>
src/cmd/link/internal/loader/loader.go

index 987feeb284e5c5366167ed5c585b6d29114666e0..ba0cff3ff66c4a2d6c73c71562f965bc6dac4f3a 100644 (file)
@@ -1075,6 +1075,12 @@ func (l *Loader) SetSymAlign(i Sym, align int32) {
 
 // SymValue returns the section of the i-th symbol. i is global index.
 func (l *Loader) SymSect(i Sym) *sym.Section {
+       if int(i) >= len(l.symSects) {
+               // symSects is extended lazily -- it the sym in question is
+               // outside the range of the existing slice, then we assume its
+               // section has not yet been set.
+               return nil
+       }
        return l.sects[l.symSects[i]]
 }