Branch: refs/heads/multiple_funcCall
  Home:   https://github.com/dyninst/dyninst
  Commit: 949510c7ee85fe515fa1abfa42ba1f40f6eb4477
      
https://github.com/dyninst/dyninst/commit/949510c7ee85fe515fa1abfa42ba1f40f6eb4477
  Author: Sasha Nicolas (zeroah) <sa...@cs.wisc.edu>
  Date:   2019-10-23 (Wed, 23 Oct 2019)

  Changed paths:
    M dyninstAPI/src/BPatch_addressSpace.C
    M dyninstAPI/src/emit-aarch64.C
    M dyninstAPI/src/emit-aarch64.h
    M dyninstAPI/src/inst-aarch64.C
    M dyninstAPI/src/inst-aarch64.h
    M dyninstAPI/src/registerSpace.C

  Log Message:
  -----------
  Fix BPatch_registerExpr for SP and save/restore registers.

RegisterSpac::allocateSpecificRegister was marking the register as used,
making the next emitCall to save them.
This would cause loadLibrary to fail because getScratchRegister would
get x0 to generate the blr instruction, overriding the parameters.
Setting the registers used for parameters as offLimits before and unsetting
them back after emitting the instruction seemed the most reasonable.

EmitterAARCH64::emitMoveRegToReg had to be implemented.
EmitterAARCH64::emitLoadOrigRegister had to be fixed since REG_SP is 31
but registerSpace::sp is 64.
Now the BaseTramp also saves SP value in a fix position.


_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to