ELF normally requires this and Solaris runtime loader will crash if we
don't do it.
Fixes Solaris build.
Change-Id: I0482eed890aff2d346136ae7f9caf8f094f502ed
Reviewed-on: https://go-review.googlesource.com/8216
Reviewed-by: Ian Lance Taylor <iant@golang.org>
datap = listsort(datap, datcmp, listnextp)
+ if Iself {
+ // Make .rela and .rela.plt contiguous, the ELF ABI requires this
+ // and Solaris actually cares.
+ var relplt *LSym
+ for l = &datap; *l != nil; l = &(*l).Next {
+ if (*l).Name == ".rel.plt" || (*l).Name == ".rela.plt" {
+ relplt = (*l)
+ *l = (*l).Next
+ break
+ }
+ }
+ if relplt != nil {
+ for s = datap; s != nil; s = s.Next {
+ if s.Name == ".rel" || s.Name == ".rela" {
+ relplt.Next = s.Next
+ s.Next = relplt
+ }
+ }
+ }
+ }
+
/*
* allocate sections. list is sorted by type,
* so we can just walk it for each piece we want to emit.