Lines Matching refs:RegCtx
201 virtual void InstrumentMemOperandPrologue(const RegisterContext &RegCtx,
206 virtual void InstrumentMemOperandEpilogue(const RegisterContext &RegCtx,
212 const RegisterContext &RegCtx,
216 const RegisterContext &RegCtx,
223 const RegisterContext &RegCtx, MCContext &Ctx,
281 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperand() argument
287 InstrumentMemOperandSmall(Op, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMemOperand()
289 InstrumentMemOperandLarge(Op, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMemOperand()
298 RegisterContext RegCtx(X86::RDX /* AddressReg */, X86::RAX /* ShadowReg */, in InstrumentMOVSBase() local
302 RegCtx.AddBusyReg(DstReg); in InstrumentMOVSBase()
303 RegCtx.AddBusyReg(SrcReg); in InstrumentMOVSBase()
304 RegCtx.AddBusyReg(CntReg); in InstrumentMOVSBase()
306 InstrumentMemOperandPrologue(RegCtx, Ctx, Out); in InstrumentMOVSBase()
313 InstrumentMemOperand(*Op, AccessSize, false /* IsWrite */, RegCtx, Ctx, in InstrumentMOVSBase()
323 InstrumentMemOperand(*Op, AccessSize, false /* IsWrite */, RegCtx, Ctx, in InstrumentMOVSBase()
332 InstrumentMemOperand(*Op, AccessSize, true /* IsWrite */, RegCtx, Ctx, Out); in InstrumentMOVSBase()
341 InstrumentMemOperand(*Op, AccessSize, true /* IsWrite */, RegCtx, Ctx, Out); in InstrumentMOVSBase()
344 InstrumentMemOperandEpilogue(RegCtx, Ctx, Out); in InstrumentMOVSBase()
419 RegisterContext RegCtx( in InstrumentMOV() local
423 RegCtx.AddBusyRegs(MemOp); in InstrumentMOV()
424 InstrumentMemOperandPrologue(RegCtx, Ctx, Out); in InstrumentMOV()
425 InstrumentMemOperand(MemOp, AccessSize, IsWrite, RegCtx, Ctx, Out); in InstrumentMOV()
426 InstrumentMemOperandEpilogue(RegCtx, Ctx, Out); in InstrumentMOV()
530 void InstrumentMemOperandPrologue(const RegisterContext &RegCtx, in InstrumentMemOperandPrologue() argument
533 unsigned LocalFrameReg = RegCtx.ChooseFrameReg(32); in InstrumentMemOperandPrologue()
553 SpillReg(Out, RegCtx.AddressReg(32)); in InstrumentMemOperandPrologue()
554 SpillReg(Out, RegCtx.ShadowReg(32)); in InstrumentMemOperandPrologue()
555 if (RegCtx.ScratchReg(32) != X86::NoRegister) in InstrumentMemOperandPrologue()
556 SpillReg(Out, RegCtx.ScratchReg(32)); in InstrumentMemOperandPrologue()
560 void InstrumentMemOperandEpilogue(const RegisterContext &RegCtx, in InstrumentMemOperandEpilogue() argument
563 unsigned LocalFrameReg = RegCtx.ChooseFrameReg(32); in InstrumentMemOperandEpilogue()
567 if (RegCtx.ScratchReg(32) != X86::NoRegister) in InstrumentMemOperandEpilogue()
568 RestoreReg(Out, RegCtx.ScratchReg(32)); in InstrumentMemOperandEpilogue()
569 RestoreReg(Out, RegCtx.ShadowReg(32)); in InstrumentMemOperandEpilogue()
570 RestoreReg(Out, RegCtx.AddressReg(32)); in InstrumentMemOperandEpilogue()
583 const RegisterContext &RegCtx,
588 const RegisterContext &RegCtx,
596 MCStreamer &Out, const RegisterContext &RegCtx) { in EmitCallAsanReport() argument
605 Out, MCInstBuilder(X86::PUSH32r).addReg(RegCtx.AddressReg(32))); in EmitCallAsanReport()
618 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandSmall() argument
619 unsigned AddressRegI32 = RegCtx.AddressReg(32); in InstrumentMemOperandSmall()
620 unsigned ShadowRegI32 = RegCtx.ShadowReg(32); in InstrumentMemOperandSmall()
621 unsigned ShadowRegI8 = RegCtx.ShadowReg(8); in InstrumentMemOperandSmall()
623 assert(RegCtx.ScratchReg(32) != X86::NoRegister); in InstrumentMemOperandSmall()
624 unsigned ScratchRegI32 = RegCtx.ScratchReg(32); in InstrumentMemOperandSmall()
687 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandSmall()
693 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandLarge() argument
694 unsigned AddressRegI32 = RegCtx.AddressReg(32); in InstrumentMemOperandLarge()
695 unsigned ShadowRegI32 = RegCtx.ShadowReg(32); in InstrumentMemOperandLarge()
728 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandLarge()
788 void InstrumentMemOperandPrologue(const RegisterContext &RegCtx, in InstrumentMemOperandPrologue() argument
791 unsigned LocalFrameReg = RegCtx.ChooseFrameReg(64); in InstrumentMemOperandPrologue()
812 SpillReg(Out, RegCtx.ShadowReg(64)); in InstrumentMemOperandPrologue()
813 SpillReg(Out, RegCtx.AddressReg(64)); in InstrumentMemOperandPrologue()
814 if (RegCtx.ScratchReg(64) != X86::NoRegister) in InstrumentMemOperandPrologue()
815 SpillReg(Out, RegCtx.ScratchReg(64)); in InstrumentMemOperandPrologue()
819 void InstrumentMemOperandEpilogue(const RegisterContext &RegCtx, in InstrumentMemOperandEpilogue() argument
822 unsigned LocalFrameReg = RegCtx.ChooseFrameReg(64); in InstrumentMemOperandEpilogue()
826 if (RegCtx.ScratchReg(64) != X86::NoRegister) in InstrumentMemOperandEpilogue()
827 RestoreReg(Out, RegCtx.ScratchReg(64)); in InstrumentMemOperandEpilogue()
828 RestoreReg(Out, RegCtx.AddressReg(64)); in InstrumentMemOperandEpilogue()
829 RestoreReg(Out, RegCtx.ShadowReg(64)); in InstrumentMemOperandEpilogue()
843 const RegisterContext &RegCtx,
848 const RegisterContext &RegCtx,
865 MCStreamer &Out, const RegisterContext &RegCtx) { in EmitCallAsanReport() argument
874 if (RegCtx.AddressReg(64) != X86::RDI) { in EmitCallAsanReport()
876 RegCtx.AddressReg(64))); in EmitCallAsanReport()
889 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandSmall() argument
890 unsigned AddressRegI64 = RegCtx.AddressReg(64); in InstrumentMemOperandSmall()
891 unsigned AddressRegI32 = RegCtx.AddressReg(32); in InstrumentMemOperandSmall()
892 unsigned ShadowRegI64 = RegCtx.ShadowReg(64); in InstrumentMemOperandSmall()
893 unsigned ShadowRegI32 = RegCtx.ShadowReg(32); in InstrumentMemOperandSmall()
894 unsigned ShadowRegI8 = RegCtx.ShadowReg(8); in InstrumentMemOperandSmall()
896 assert(RegCtx.ScratchReg(32) != X86::NoRegister); in InstrumentMemOperandSmall()
897 unsigned ScratchRegI32 = RegCtx.ScratchReg(32); in InstrumentMemOperandSmall()
959 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandSmall()
965 const RegisterContext &RegCtx, MCContext &Ctx, MCStreamer &Out) { in InstrumentMemOperandLarge() argument
966 unsigned AddressRegI64 = RegCtx.AddressReg(64); in InstrumentMemOperandLarge()
967 unsigned ShadowRegI64 = RegCtx.ShadowReg(64); in InstrumentMemOperandLarge()
1001 EmitCallAsanReport(AccessSize, IsWrite, Ctx, Out, RegCtx); in InstrumentMemOperandLarge()