mirror of
https://github.com/golang/go
synced 2024-11-08 09:36:24 -07:00
cmd/link/internal/arm64: handle calls to SDYNIMPORT with internal linking
Handle calls to symbols that are SDYNIMPORT when linking internally on arm64. Update #36435 Change-Id: I8b5421171bf471cf31c91d90b8ba99511d2c9e2a Reviewed-on: https://go-review.googlesource.com/c/go/+/250181 Trust: Joel Sing <joel@sing.id.au> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
2517f4946b
commit
623319a847
@ -219,15 +219,16 @@ func adddynrel(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, s loade
|
||||
// External linker will do this relocation.
|
||||
return true
|
||||
}
|
||||
if target.IsDarwin() { // XXX why we don't need this for ELF?
|
||||
// Internal linking.
|
||||
// Build a PLT entry and change the relocation target to that entry.
|
||||
addpltsym(target, ldr, syms, targ)
|
||||
su := ldr.MakeSymbolUpdater(s)
|
||||
su.SetRelocSym(rIdx, syms.PLT)
|
||||
su.SetRelocAdd(rIdx, int64(ldr.SymPlt(targ)))
|
||||
return true
|
||||
// Internal linking.
|
||||
if r.Add() != 0 {
|
||||
ldr.Errorf(s, "PLT call with non-zero addend (%v)", r.Add())
|
||||
}
|
||||
// Build a PLT entry and change the relocation target to that entry.
|
||||
addpltsym(target, ldr, syms, targ)
|
||||
su := ldr.MakeSymbolUpdater(s)
|
||||
su.SetRelocSym(rIdx, syms.PLT)
|
||||
su.SetRelocAdd(rIdx, int64(ldr.SymPlt(targ)))
|
||||
return true
|
||||
|
||||
case objabi.R_ADDR:
|
||||
if ldr.SymType(s) == sym.STEXT && target.IsElf() {
|
||||
|
Loading…
Reference in New Issue
Block a user