Lines Matching defs:adrpRel
65 bool tryRelaxAdrpAdd(const Relocation &adrpRel, const Relocation &addRel,
67 bool tryRelaxAdrpLdr(const Relocation &adrpRel, const Relocation &ldrRel,
742 bool AArch64Relaxer::tryRelaxAdrpAdd(const Relocation &adrpRel,
752 if (!config->relax || adrpRel.type != R_AARCH64_ADR_PREL_PG_HI21 ||
756 if (adrpRel.offset + 4 != addRel.offset)
758 if (adrpRel.sym != addRel.sym)
760 if (adrpRel.addend != 0 || addRel.addend != 0)
763 uint32_t adrpInstr = read32le(buf + adrpRel.offset);
775 Symbol &sym = *adrpRel.sym;
784 write32le(buf + adrpRel.offset, 0xd503201f);
791 bool AArch64Relaxer::tryRelaxAdrpLdr(const Relocation &adrpRel,
805 if (adrpRel.type != R_AARCH64_ADR_GOT_PAGE ||
809 if (adrpRel.offset + 4 != ldrRel.offset)
813 if (!adrpRel.sym || adrpRel.sym != ldrRel.sym || !adrpRel.sym->isDefined() ||
814 adrpRel.sym->isPreemptible || adrpRel.sym->isGnuIFunc())
817 if (adrpRel.addend != 0 || ldrRel.addend != 0)
819 uint32_t adrpInstr = read32le(buf + adrpRel.offset);
835 Symbol &sym = *adrpRel.sym;
843 getAArch64Page(sym.getVA()) - getAArch64Page(secAddr + adrpRel.offset);
848 adrpRel.offset, /*addend=*/0, &sym};