Lines Matching defs:adrpRel
98 bool tryRelaxAdrpAdd(const Relocation &adrpRel, const Relocation &addRel,
100 bool tryRelaxAdrpLdr(const Relocation &adrpRel, const Relocation &ldrRel,
797 bool AArch64Relaxer::tryRelaxAdrpAdd(const Relocation &adrpRel,
807 if (!ctx.arg.relax || adrpRel.type != R_AARCH64_ADR_PREL_PG_HI21 ||
811 if (adrpRel.offset + 4 != addRel.offset)
813 if (adrpRel.sym != addRel.sym)
815 if (adrpRel.addend != 0 || addRel.addend != 0)
818 uint32_t adrpInstr = read32le(buf + adrpRel.offset);
830 Symbol &sym = *adrpRel.sym;
839 write32le(buf + adrpRel.offset, 0xd503201f);
846 bool AArch64Relaxer::tryRelaxAdrpLdr(const Relocation &adrpRel,
860 if (adrpRel.type != R_AARCH64_ADR_GOT_PAGE ||
864 if (adrpRel.offset + 4 != ldrRel.offset)
868 if (!adrpRel.sym || adrpRel.sym != ldrRel.sym || !adrpRel.sym->isDefined() ||
869 adrpRel.sym->isPreemptible || adrpRel.sym->isGnuIFunc())
872 if (adrpRel.addend != 0 || ldrRel.addend != 0)
874 uint32_t adrpInstr = read32le(buf + adrpRel.offset);
890 Symbol &sym = *adrpRel.sym;
898 getAArch64Page(sym.getVA(ctx)) - getAArch64Page(secAddr + adrpRel.offset);
903 adrpRel.offset, /*addend=*/0, &sym};