Commit 83b25d93 authored by Aram Hăvărneanu's avatar Aram Hăvărneanu

cmd/ld: make .rela and .rela.plt sections contiguous

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/8216Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent c94f1f79
......@@ -1267,6 +1267,27 @@ func dodata() {
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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment