mirror of
https://github.com/golang/go
synced 2024-11-25 13:38:00 -07:00
cmd/5l, cmd/ld: add support for R_ARM_GOT_PREL
Android NDK's gcc 4.6 generates this relocation for runtime/cgo. R=rsc CC=golang-dev https://golang.org/cl/6450056
This commit is contained in:
parent
dd62bb4753
commit
9de61e7c8c
@ -158,11 +158,22 @@ adddynrel(Sym *s, Reloc *r)
|
||||
r->sym = S;
|
||||
r->add += targ->got;
|
||||
return;
|
||||
|
||||
|
||||
case 256 + R_ARM_GOT_PREL: // GOT(S) + A - P
|
||||
if(targ->dynimpname == nil || targ->dynexport) {
|
||||
addgotsyminternal(targ);
|
||||
} else {
|
||||
addgotsym(targ);
|
||||
}
|
||||
r->type = D_PCREL;
|
||||
r->sym = lookup(".got", 0);
|
||||
r->add += targ->got + 4;
|
||||
return;
|
||||
|
||||
case 256 + R_ARM_GOTOFF: // R_ARM_GOTOFF32
|
||||
r->type = D_GOTOFF;
|
||||
return;
|
||||
|
||||
|
||||
case 256 + R_ARM_GOTPC: // R_ARM_BASE_PREL
|
||||
r->type = D_PCREL;
|
||||
r->sym = lookup(".got", 0);
|
||||
|
@ -564,6 +564,7 @@ typedef struct {
|
||||
#define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */
|
||||
#define R_ARM_CALL 28
|
||||
#define R_ARM_V4BX 40
|
||||
#define R_ARM_GOT_PREL 96
|
||||
#define R_ARM_GNU_VTENTRY 100
|
||||
#define R_ARM_GNU_VTINHERIT 101
|
||||
#define R_ARM_RSBREL32 250
|
||||
|
@ -847,6 +847,7 @@ reltype(char *pn, int elftype, uchar *siz)
|
||||
case R('5', R_ARM_REL32):
|
||||
case R('5', R_ARM_CALL):
|
||||
case R('5', R_ARM_V4BX):
|
||||
case R('5', R_ARM_GOT_PREL):
|
||||
case R('6', R_X86_64_PC32):
|
||||
case R('6', R_X86_64_PLT32):
|
||||
case R('6', R_X86_64_GOTPCREL):
|
||||
|
Loading…
Reference in New Issue
Block a user