mirror of
https://github.com/golang/go
synced 2024-11-23 17:40:03 -07:00
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/8216 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
c94f1f791b
commit
83b25d9342
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user