From 9568d54fb8d89267304d23cac23190f55ec95683 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Wed, 20 Apr 2016 19:10:20 -0400 Subject: [PATCH] cmd/link: fix reordering of plt/rel For the Solaris and S/390 builders. Change-Id: Id9a83e0df91e6d0df8488ec5e2a546ba8e2d800e Reviewed-on: https://go-review.googlesource.com/22327 Run-TryBot: David Crawshaw TryBot-Result: Gobot Gobot Reviewed-by: Michael Hudson-Doyle Reviewed-by: Michael Munday --- src/cmd/link/internal/ld/data.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index cc509fbc6d..e73fa041a4 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -1863,16 +1863,16 @@ func dodataSect(symn int, syms []*LSym) []*LSym { } } if reli >= 0 && plti >= 0 && plti != reli+1 { - newSyms := make([]*LSym, 0, len(syms)) - plt := syms[plti] - newSyms = append(newSyms, syms[:reli+1]...) - newSyms = append(newSyms, plt) - newSyms = append(newSyms, syms[reli+1:plti]...) - newSyms = append(newSyms, syms[plti+1:]...) - if len(newSyms) != len(syms) { - Diag("plt move failed: len %d/%d", len(newSyms), len(syms)) + var first, second int + if plti > reli { + first, second = reli, plti + } else { + first, second = plti, reli } - syms = newSyms + rel, plt := syms[reli], syms[plti] + copy(syms[first+2:], syms[first+1:second]) + syms[first+0] = rel + syms[first+1] = plt } } -- 2.48.1