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);
#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
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):