From: Than McIntosh Date: Fri, 13 Dec 2019 18:34:43 +0000 (-0500) Subject: [dev.link] cmd/link: add hooks for sorting loader.Reloc by offset X-Git-Tag: go1.15beta1~679^2~158 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a52cea446d93e736113ed05c96e14f2d180c4274;p=gostls13.git [dev.link] cmd/link: add hooks for sorting loader.Reloc by offset Add support for supporting loader.Reloc by offset, needed by host object loaders. Change-Id: I5ac0702ee74ad71531f443e6215558d8151e3a4c Reviewed-on: https://go-review.googlesource.com/c/go/+/211306 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang Reviewed-by: Jeremy Faller --- diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go index 28d8c397e0..6ffc67327e 100644 --- a/src/cmd/link/internal/loader/loader.go +++ b/src/cmd/link/internal/loader/loader.go @@ -1339,6 +1339,14 @@ func (l *Loader) relocs(r *oReader, li int) Relocs { } } +// RelocByOff implements sort.Interface for sorting relocations by offset. + +type RelocByOff []Reloc + +func (x RelocByOff) Len() int { return len(x) } +func (x RelocByOff) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x RelocByOff) Less(i, j int) bool { return x[i].Off < x[j].Off } + // Preload a package: add autolibs, add symbols to the symbol table. // Does not read symbol data yet. func (l *Loader) Preload(arch *sys.Arch, syms *sym.Symbols, f *bio.Reader, lib *sym.Library, unit *sym.CompilationUnit, length int64, pn string, flags int) {