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