mirror of
https://github.com/golang/go
synced 2024-11-02 09:03:03 +00:00
cmd/compile: avoid pointers in go.string.* symbols
When creating binaries for dynamic linking, the linker moves read-only data symbols that contain pointers into relro sections. It is not setup for handling a go.string symbol moving to relro. Instead of teaching it how (because go.string symbols with pointers are unusual anyhow), put the data in a type.. section. Fixes the android builder. Change-Id: Ica4722d32241643c060923517b90276ff8ac6b07 Reviewed-on: https://go-review.googlesource.com/21110 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
41e176fbe0
commit
4d920410d2
1 changed files with 5 additions and 1 deletions
|
@ -533,7 +533,11 @@ func dname(s *Sym, ot int, name, tag string, pkg *Pkg, exported bool) int {
|
|||
if pkg == nil {
|
||||
_, bsym = stringsym(string(b))
|
||||
} else {
|
||||
bsymname := fmt.Sprintf(`go.string."".methodname.%d`, dnameCount)
|
||||
// Write out data as "type.." to signal two things to the
|
||||
// linker, first that when dynamically linking, the symbol
|
||||
// should be moved to a relro section, and second that the
|
||||
// contents should not be decoded as a type.
|
||||
bsymname := fmt.Sprintf(`type..methodname."".%d`, dnameCount)
|
||||
dnameCount++
|
||||
bsym = obj.Linklookup(Ctxt, bsymname, 0)
|
||||
bsym.P = b
|
||||
|
|
Loading…
Reference in a new issue