diff options
| author | Shenghou Ma <minux.ma@gmail.com> | 2012-07-30 18:48:00 -0400 |
|---|---|---|
| committer | Shenghou Ma <minux.ma@gmail.com> | 2012-07-30 18:48:00 -0400 |
| commit | 9de61e7c8c779dafccbcd0242e06f92eb6f0e1ee (patch) | |
| tree | 715ff2282e37ee54246ac4c11fb4ded7ddb5263b /src/cmd/5l | |
| parent | dd62bb4753147ff832eb769af892054fb1562c7c (diff) | |
| download | go-9de61e7c8c779dafccbcd0242e06f92eb6f0e1ee.tar.xz | |
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
Diffstat (limited to 'src/cmd/5l')
| -rw-r--r-- | src/cmd/5l/asm.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c index 693e515709..911b6892cf 100644 --- a/src/cmd/5l/asm.c +++ b/src/cmd/5l/asm.c @@ -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); |
