diff --git a/include/base/SMPDataFlowAnalysis.h b/include/base/SMPDataFlowAnalysis.h index 570c8a7d5e89fd5d60b57d28fde15e7e7f95cb04..83141b04ba51eee7c8bf4e1e0f0091288fc3ba5b 100644 --- a/include/base/SMPDataFlowAnalysis.h +++ b/include/base/SMPDataFlowAnalysis.h @@ -160,14 +160,14 @@ STARSOpndTypePtr CloneIfNecessary(const STARSOpndTypePtr &CurrOp, bool UseFP); // Debug: print one operand from an instruction or DEF or USE list. void PrintDefUse(unsigned long feature, int OpNum); void PrintSIB(const STARSOpndTypePtr &Opnd); -void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile); -void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, uint16_t SegReg, bool UseFP); +void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, char OutString[STARS_MAXSTR], bool Has64BitOperands); +void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, uint16_t SegReg, bool UseFP, bool Has64BitOperands); void PrintOneOperand(const STARSOpndTypePtr &Opnd, uint32_t features, int OpNum); void PrintListOperand(const STARSOpndTypePtr &Opnd, int SSANum = SMP_SSA_UNINIT); void PrintOperand(const STARSOpndTypePtr &Opnd); // Annotations: concisely print one operand. -void AnnotPrintOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile); +void AnnotPrintOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile, bool UseFP, bool Has64BitOperands); // Print opcode string. void PrintOpcode(uint16_t opcode, FILE *OutFile); diff --git a/src/base/SMPBasicBlock.cpp b/src/base/SMPBasicBlock.cpp index 372f1744bbb873844e8ce0560b40cb4ee4010999..84e0736b64524b83a615e2eacfcfeae3db106811 100644 --- a/src/base/SMPBasicBlock.cpp +++ b/src/base/SMPBasicBlock.cpp @@ -2290,8 +2290,10 @@ bool SMPBasicBlock::AnalyzeMemSet(STARS_ea_t MemSetAddr, STARSOpndTypePtr &MemSe CanonicalizeOpnd(UseOp); } if (UseOp->IsVoidOp()) { - SMP_msg("ERROR: No move source at %lx within AnalyzeMemSet().\n", - (unsigned long) InstAddr); + // NOTE: We could drop the requirement for a move inst and trace arg #2 + // back through arithmetic if SCCP can find constants. + SMP_msg("WARNING: No move size at %llx within AnalyzeMemSet().\n", + (unsigned long long) InstAddr); break; } else { diff --git a/src/base/SMPDataFlowAnalysis.cpp b/src/base/SMPDataFlowAnalysis.cpp index d9bb57604fd4d803b96a213c6164a3ce56eafff2..4c84a84d60fa6f13d88b2868e392c5d2af2fdf55 100644 --- a/src/base/SMPDataFlowAnalysis.cpp +++ b/src/base/SMPDataFlowAnalysis.cpp @@ -586,7 +586,8 @@ bool MDIsDirectStackAccessOpnd(const STARSOpndTypePtr &CurrOp, bool UseFP) { // MACHINE DEPENDENT: Is operand trackable in data flow analyses (i.e. a direct stack memory access or a register?) bool MDIsDataFlowOpnd(const STARSOpndTypePtr &CurrOp, bool UseFP) { - return ((nullptr != CurrOp) && (CurrOp->IsRegOp() || MDIsDirectStackAccessOpnd(CurrOp, UseFP))); + return ((nullptr != CurrOp) + && ((CurrOp->IsRegOp() && (STARS_x86_R_ip != CurrOp->GetReg())) || MDIsDirectStackAccessOpnd(CurrOp, UseFP))); } // MACHINE DEPENDENT: Is operand a caller-saved register? @@ -694,26 +695,31 @@ void PrintSIB(const STARSOpndTypePtr &Opnd) { } // end PrintSIB() // Annotations: concisely print SIB info for an operand. -void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile) { +void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, char OutString[STARS_MAXSTR], bool Has64BitOperands) { int BaseReg; int IndexReg; uint16_t ScaleFactor; + uint16_t ByteWidth = Opnd->GetByteWidth(); STARS_ea_t offset; - char OutString[STARS_MAXSTR] = {'[', '\0'}; char ScaleString[4]; + if (Has64BitOperands) + ByteWidth = 8; + + SMP_strncat(OutString, "[", STARS_MAXSTR - 1); + MDExtractAddressFields(Opnd, BaseReg, IndexReg, ScaleFactor, offset); if (ScaleFactor > 0) { - ScaleFactor = 1 << (ScaleFactor - 1); + ScaleFactor = 1 << ScaleFactor; (void) SMP_snprintf(ScaleString, 4, "%d", ScaleFactor); } if (BaseReg != STARS_x86_R_none) { - (void) SMP_strncat(OutString, MDGetRegNumName(BaseReg, RegSizes[BaseReg]), STARS_MAXSTR - 1); + (void) SMP_strncat(OutString, MDGetRegNumName(BaseReg, ByteWidth), STARS_MAXSTR - 1); if (IndexReg != STARS_x86_R_none) { (void) SMP_strncat(OutString, "+", STARS_MAXSTR-1); - (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, RegSizes[IndexReg]), STARS_MAXSTR - 1); + (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, ByteWidth), STARS_MAXSTR - 1); if (ScaleFactor > 0) { (void) SMP_strncat(OutString, "*", STARS_MAXSTR-1); (void) SMP_strncat(OutString, ScaleString, STARS_MAXSTR-1); @@ -721,7 +727,7 @@ void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile) } } else if (IndexReg != STARS_x86_R_none) { - (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, RegSizes[IndexReg]), STARS_MAXSTR - 1); + (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, ByteWidth), STARS_MAXSTR - 1); if (ScaleFactor > 0) { (void) SMP_strncat(OutString, "*", STARS_MAXSTR-1); (void) SMP_strncat(OutString, ScaleString, STARS_MAXSTR-1); @@ -736,14 +742,18 @@ void AnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile) } // end AnnotPrintSIB() // Annotations: concisely print SIB info for an operand. -void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, uint16_t SegReg, bool UseFP) { +void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutFile, uint16_t SegReg, bool UseFP, bool Has64BitOperands) { int BaseReg; int IndexReg; uint16_t ScaleFactor; + uint16_t ByteWidth = Opnd->GetByteWidth(); STARS_ea_t offset; char OutString[STARS_MAXSTR] = {'(', '\0'}; char ScaleString[4]; + if (Has64BitOperands) + ByteWidth = 8; + MDExtractAddressFields(Opnd, BaseReg, IndexReg, ScaleFactor, offset); bool SegRegPrefix = STARS_x86_is_segreg((int) SegReg); @@ -769,15 +779,15 @@ void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutF (void) SMP_strncat(OutString, " + ", STARS_MAXSTR-1); } (void) SMP_strncat(OutString, "X86.", STARS_MAXSTR-1); - (void) SMP_strncat(OutString, MDGetRegNumName(BaseReg, RegSizes[BaseReg]), STARS_MAXSTR-1); - if (global_STARS_program->GetSTARS_ISA_Bytewidth() > RegSizes[BaseReg]) { + (void) SMP_strncat(OutString, MDGetRegNumName(BaseReg, ByteWidth), STARS_MAXSTR-1); + if (global_STARS_program->GetSTARS_ISA_Bytewidth() > ByteWidth) { ++SubwordAddressRegCount; } if (IndexReg != STARS_x86_R_none) { (void) SMP_strncat(OutString, " + ", STARS_MAXSTR-1); (void) SMP_strncat(OutString, "X86.", STARS_MAXSTR-1); - (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, RegSizes[IndexReg]), STARS_MAXSTR-1); - if (global_STARS_program->GetSTARS_ISA_Bytewidth() > RegSizes[IndexReg]) { + (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, ByteWidth), STARS_MAXSTR-1); + if (global_STARS_program->GetSTARS_ISA_Bytewidth() > ByteWidth) { ++SubwordAddressRegCount; } if (ScaleFactor > 0) { @@ -791,8 +801,8 @@ void SPARKAnnotPrintSIB(const STARSOpndTypePtr &Opnd, bool HasOffset, FILE *OutF (void) SMP_strncat(OutString, " + ", STARS_MAXSTR-1); } (void) SMP_strncat(OutString, "X86.", STARS_MAXSTR-1); - (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, RegSizes[IndexReg]), STARS_MAXSTR - 1); - if (global_STARS_program->GetSTARS_ISA_Bytewidth() > RegSizes[IndexReg]) { + (void) SMP_strncat(OutString, MDGetRegNumName(IndexReg, ByteWidth), STARS_MAXSTR - 1); + if (global_STARS_program->GetSTARS_ISA_Bytewidth() > ByteWidth) { ++SubwordAddressRegCount; } if (ScaleFactor > 0) { @@ -907,31 +917,52 @@ void PrintListOperand(const STARSOpndTypePtr &Opnd, int SSANum) { } // end of PrintListOperand() // Annotations: concisely print one operand. -void AnnotPrintOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile) { +void AnnotPrintOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile, bool UseFP, bool Has64BitOperands) { + char OutString[STARS_MAXSTR] = { '\0', '\0' }; + uint16_t ByteWidth = Opnd->GetByteWidth(); + if (Has64BitOperands) + ByteWidth = 8; + + uint16_t SegReg = Opnd->GetSegReg(); + bool SegRegPrefix = STARS_x86_is_segreg((int) SegReg); + if (SegRegPrefix) { + // Emit segment register string unless it is just the stack segment plus a stack operand, + // where the stack segment is implied anyway. + if ((SegReg == STARS_x86_R_ss) && MDIsStackAccessOpnd(Opnd, UseFP)) { + SegRegPrefix = false; + } + else if (SegReg != STARS_x86_R_ds) { // not default data segment + (void) SMP_strncat(OutString, MDGetRegNumName(SegReg, RegSizes[SegReg]), STARS_MAXSTR - 1); + (void) SMP_strncat(OutString, ":", STARS_MAXSTR - 1); + } + } if (Opnd->IsStaticMemOp()) { - SMP_fprintf(OutFile, " %llx", (unsigned long long) Opnd->GetAddr()); + SMP_snprintf(OutString, STARS_MAXSTR - 1, " %llx", (unsigned long long) Opnd->GetAddr()); if (Opnd->HasSIBByte()) { - AnnotPrintSIB(Opnd, false, OutFile); + AnnotPrintSIB(Opnd, false, OutFile, OutString, Has64BitOperands); + } + else { + SMP_fprintf(OutFile, " %s", OutString); } } else if (Opnd->IsMemNoDisplacementOp()) { if (Opnd->HasSIBByte()) { // has SIB info - AnnotPrintSIB(Opnd, false, OutFile); + AnnotPrintSIB(Opnd, false, OutFile, OutString, Has64BitOperands); } else { // no SIB info uint16_t BaseReg = Opnd->GetReg(); - SMP_fprintf(OutFile, " [%s]", MDGetRegNumName(BaseReg, RegSizes[BaseReg])); + SMP_fprintf(OutFile, " [%s]", MDGetRegNumName(BaseReg, ByteWidth)); } if (Opnd->GetAddr() != 0) { - SMP_msg(" \n ERROR: addr for o_phrase type: %lx\n", (unsigned long) Opnd->GetAddr()); + SMP_msg(" \n ERROR: addr for o_phrase type: %llx\n", (unsigned long long) Opnd->GetAddr()); } } else if (Opnd->IsMemDisplacementOp()) { STARS_ea_t offset = Opnd->GetAddr(); int SignedOffset = (int) offset; if (Opnd->HasSIBByte()) { - AnnotPrintSIB(Opnd, (SignedOffset != 0), OutFile); + AnnotPrintSIB(Opnd, (SignedOffset != 0), OutFile, OutString, Has64BitOperands); if (SignedOffset > 0) // print plus sign SMP_fprintf(OutFile, "+%d]", SignedOffset); else if (SignedOffset < 0) // minus sign will print automatically @@ -941,9 +972,9 @@ void AnnotPrintOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile) { else { uint16_t BaseReg = Opnd->GetReg(); if (SignedOffset >= 0) // print plus sign - SMP_fprintf(OutFile, " [%s+%d]", MDGetRegNumName(BaseReg, RegSizes[BaseReg]), SignedOffset); + SMP_fprintf(OutFile, " [%s+%d]", MDGetRegNumName(BaseReg, ByteWidth), SignedOffset); else // minus sign will print automatically - SMP_fprintf(OutFile, " [%s%d]", MDGetRegNumName(BaseReg, RegSizes[BaseReg]), SignedOffset); + SMP_fprintf(OutFile, " [%s%d]", MDGetRegNumName(BaseReg, ByteWidth), SignedOffset); } } else if (Opnd->IsRegOp()) { diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp index d34e4f46a0439b557aad28e01bfce2d0cae6268d..9e5e626559ef4242b24e0f3959a5a6d3018bc28f 100644 --- a/src/base/SMPFunction.cpp +++ b/src/base/SMPFunction.cpp @@ -5499,6 +5499,10 @@ void SMPFunction::DetectLoopInvariantDEFs(void) { VariantUseFound = true; break; } + else if (UseOp->GetReg() == STARS_x86_R_ip) { // instruction pointer a.k.a. program counter + VariantUseFound = true; + break; + } else if (UseOp->IsRegOp()) { // Find out if reg DEF is in a Phi function for the loop header, or otherwise outside the loop. bool LocalName = CurrBlock->IsLocalName(UseOp); @@ -9764,14 +9768,14 @@ void SMPFunction::EmitFuncPtrShadowingAnnotations(FILE *InfoAnnotFile) { // Emit the annotation to shadow the InArg value at the top of the function. SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR FPTRSHADOW ", (unsigned long long) ShadowAddr, ShadowInst->GetSize()); - AnnotPrintOperand(ShadowOp, InfoAnnotFile); + AnnotPrintOperand(ShadowOp, InfoAnnotFile, UseFP, ShadowInst->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " SHADOWID %u\n", CurrentShadowID); // Emit the annotation to check the shadowed value before the INDIR_CALL. SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR FPTRCHECK ", (unsigned long long) ShadowCheckAddr, CurrInst->GetSize()); UseOp = CurrInst->GetFirstRightOperandNoNorm(); // for annotation printing - AnnotPrintOperand(UseOp, InfoAnnotFile); + AnnotPrintOperand(UseOp, InfoAnnotFile, UseFP, CurrInst->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " SHADOWID %u\n", CurrentShadowID); // Increment the unique shadowing index @@ -9803,7 +9807,7 @@ void SMPFunction::EmitFuncPtrShadowingAnnotations(FILE *InfoAnnotFile) { // Emit the annotation to shadow the InArg value at the top of the function. SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR FPTRSHADOW ", (unsigned long long) ShadowAddr, ShadowInst->GetSize()); - AnnotPrintOperand(ShadowOp, InfoAnnotFile); + AnnotPrintOperand(ShadowOp, InfoAnnotFile, UseFP, ShadowInst->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " SHADOWID %u\n", CurrentShadowID); // Emit the annotation to check the shadowed value before the INDIR_CALL. @@ -9814,7 +9818,7 @@ void SMPFunction::EmitFuncPtrShadowingAnnotations(FILE *InfoAnnotFile) { ArgOp = CurrInst->GetFirstLeftOperandNoNorm(); // need unnormalized stack mem ops for annotations } - AnnotPrintOperand(ArgOp, InfoAnnotFile); + AnnotPrintOperand(ArgOp, InfoAnnotFile, UseFP, CurrInst->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " SHADOWID %u\n", CurrentShadowID); // Increment the unique shadowing index diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp index 9936e18c4e5cd2a5c4b8ec939e304cbffe4c9cdd..372dbe35febd1206ae46806d880fd95d6c0e3b23 100644 --- a/src/base/SMPInstr.cpp +++ b/src/base/SMPInstr.cpp @@ -353,7 +353,7 @@ void SMPInstr::PrintSPARKAdaOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile, if (Opnd->IsStaticMemOp()) { if (Opnd->HasSIBByte()) { SMP_fprintf(OutFile, " %s ", MemWriteString); - SPARKAnnotPrintSIB(Opnd, true, OutFile, Opnd->GetSegReg(), UseFP); + SPARKAnnotPrintSIB(Opnd, true, OutFile, Opnd->GetSegReg(), UseFP, this->MDHas64BitOperands()); SMP_fprintf(OutFile, " + 16#%llx# )", (unsigned long long) Opnd->GetAddr()); } else { @@ -366,7 +366,7 @@ void SMPInstr::PrintSPARKAdaOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile, else if (Opnd->IsMemNoDisplacementOp()) { if (Opnd->HasSIBByte()) { // has SIB info SMP_fprintf(OutFile, " %s ", MemWriteString); - SPARKAnnotPrintSIB(Opnd, false, OutFile, Opnd->GetSegReg(), UseFP); + SPARKAnnotPrintSIB(Opnd, false, OutFile, Opnd->GetSegReg(), UseFP, this->MDHas64BitOperands()); } else { // no SIB info uint16_t BaseReg = Opnd->GetReg(); @@ -398,7 +398,7 @@ void SMPInstr::PrintSPARKAdaOperand(const STARSOpndTypePtr &Opnd, FILE *OutFile, int SignedOffset = (int) offset; if (Opnd->HasSIBByte()) { SMP_fprintf(OutFile, " %s ", MemWriteString); - SPARKAnnotPrintSIB(Opnd, (SignedOffset != 0), OutFile, Opnd->GetSegReg(), UseFP); + SPARKAnnotPrintSIB(Opnd, (SignedOffset != 0), OutFile, Opnd->GetSegReg(), UseFP, this->MDHas64BitOperands()); if (SignedOffset > 0) // print plus sign SMP_fprintf(OutFile, "+%d )", SignedOffset); else if (SignedOffset < 0) // minus sign will print automatically @@ -8337,8 +8337,12 @@ void SMPInstr::SCCPFetchConstUseValue(const STARSOpndTypePtr &UseOp, STARS_SCCP_ BaseReg = UseOp->MDGetSIBIndexReg(); if (MD_STACK_POINTER_REG == BaseReg) { // ESP IndexReg in SIB byte means no index reg + // seg reg without index or base reg, e.g.: FS:0x28 BaseReg = STARS_x86_R_none; + GoodAddr = false; // until we track segment register values +#if 0 SMP_msg("ERROR: StaticMemOp with SIB byte and no index reg at %llx\n", (unsigned long long) this->GetAddr()); +#endif } } #else @@ -11102,7 +11106,7 @@ void SMPInstr::EmitAnnotations(bool UseFP, bool AllocSeen, bool NeedsFrame, FILE // Need to unnormalize stack memory DEFs and USEs before printing annotations. this->MDGetUnnormalizedOp(AnnotDefOp); SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR MEMSRC %d", (unsigned long long) addr, this->GetSize(), SrcBitWidth); - AnnotPrintOperand(AnnotDefOp, InfoAnnotFile); + AnnotPrintOperand(AnnotDefOp, InfoAnnotFile, UseFP, this->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " ZZ %s \n", disasm); } if (MemDest) { @@ -11112,7 +11116,7 @@ void SMPInstr::EmitAnnotations(bool UseFP, bool AllocSeen, bool NeedsFrame, FILE // Need to unnormalize stack memory DEFs and USEs before printing annotations. this->MDGetUnnormalizedOp(AnnotDefOp); SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR MEMDEF %d", (unsigned long long) addr, this->GetSize(), DestBitWidth); - AnnotPrintOperand(AnnotDefOp, InfoAnnotFile); + AnnotPrintOperand(AnnotDefOp, InfoAnnotFile, UseFP, this->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " ZZ %s \n", disasm); } #endif @@ -11388,7 +11392,7 @@ void SMPInstr::EmitTypeAnnotations(bool UseFP, bool AllocSeen, bool NeedsFrame, // Need to unnormalize stack memory DEFs and USEs before printing annotations. this->MDGetUnnormalizedOp(AnnotDefOp); SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR MEMSRC %zu", (unsigned long long) addr, this->GetSize(), SrcBitWidth); - AnnotPrintOperand(AnnotDefOp, InfoAnnotFile); + AnnotPrintOperand(AnnotDefOp, InfoAnnotFile, UseFP, this->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " ZZ %s \n", disasm); } if (MemDest) { @@ -11398,7 +11402,7 @@ void SMPInstr::EmitTypeAnnotations(bool UseFP, bool AllocSeen, bool NeedsFrame, // Need to unnormalize stack memory DEFs and USEs before printing annotations. this->MDGetUnnormalizedOp(AnnotDefOp); SMP_fprintf(InfoAnnotFile, "%18llx %6zu INSTR MEMDEF %zu", (unsigned long long) addr, this->GetSize(), DestBitWidth); - AnnotPrintOperand(AnnotDefOp, InfoAnnotFile); + AnnotPrintOperand(AnnotDefOp, InfoAnnotFile, UseFP, this->MDHas64BitOperands()); SMP_fprintf(InfoAnnotFile, " ZZ %s \n", disasm); } #endif @@ -12002,7 +12006,7 @@ void SMPInstr::EmitIntegerErrorAnnotations(FILE *InfoAnnotFile, list<std::size_t // Need to unnormalize stack memory DEFs and USEs before printing annotations. this->MDGetUnnormalizedOp(AnnotDefOp); } - AnnotPrintOperand(AnnotDefOp, InfoAnnotFile); + AnnotPrintOperand(AnnotDefOp, InfoAnnotFile, UseFP, this->MDHas64BitOperands()); if (!IgnoreOverflow) { // See if we made a special detection of an operation involved in a hash function, which can // be expected to overflow benignly. @@ -14164,6 +14168,13 @@ bool SMPInstr::BuildLeaRTL(void) { SourceFound = true; UseOp = TempOp; MDExtractAddressFields(TempOp, BaseReg, IndexReg, ScaleFactor, offset); + if (TempOp->GetSegReg() == STARS_x86_R_cs) { + // Special case of PC-relative addressing, e.g. lea edx,[eip+offset] + // which is encoded by IDA Pro with no basereg but CS segreg. + if (STARS_x86_R_none == BaseReg) { + BaseReg = STARS_x86_R_ip; + } + } } else { ; diff --git a/tests/commit/save-ffmpeg.psexe.infoannot.REMOVED.git-id b/tests/commit/save-ffmpeg.psexe.infoannot.REMOVED.git-id index 5b9eb318aab96d0e778a609964bf50d5391307f6..48c6afbe6690d8fabe92b30b2d7e8cdcafbb5a55 100644 --- a/tests/commit/save-ffmpeg.psexe.infoannot.REMOVED.git-id +++ b/tests/commit/save-ffmpeg.psexe.infoannot.REMOVED.git-id @@ -1 +1 @@ -17a6bfb9aafc8e86bff8064b686f3bc98bf8301a \ No newline at end of file +8bc3eb7b422e0fad165848585f9251bfd0f8d062 \ No newline at end of file diff --git a/tests/commit/save-gimp.psexe.infoannot.REMOVED.git-id b/tests/commit/save-gimp.psexe.infoannot.REMOVED.git-id index 6912d79757a2a9c0fd25e4f6f4be8b696239cae9..ed49a650fc31fd5d315176b9dab89811eeaefcb3 100644 --- a/tests/commit/save-gimp.psexe.infoannot.REMOVED.git-id +++ b/tests/commit/save-gimp.psexe.infoannot.REMOVED.git-id @@ -1 +1 @@ -87c871085d7c0c035f6af3bc7851f7b00d99de9d \ No newline at end of file +19633d3dd00a963df7f2b6cfc39ea5a286e2aad5 \ No newline at end of file diff --git a/tests/commit/save-gnome-keyring-daemon.psexe.infoannot b/tests/commit/save-gnome-keyring-daemon.psexe.infoannot index 07f91e5cd785623bc3731c4505204de3be9e2236..3026046948734445d5d43fbe01636048864dbbcb 100644 --- a/tests/commit/save-gnome-keyring-daemon.psexe.infoannot +++ b/tests/commit/save-gnome-keyring-daemon.psexe.infoannot @@ -1787,7 +1787,7 @@ 422c50 118 FUNC RETURNTYPE RAX 4 422c50 118 FUNC INARGS 6 ARG0 4 ARG1 16 ARG2 4 ARG3 1 ARG4 1 ARG5 0 422c50 118 FUNC PROBLEM sub_422C50 CALLUNRESOLVED - 422c5d 4 INSTR FPTRSHADOW [EDI+16] SHADOWID 1 + 422c5d 4 INSTR FPTRSHADOW [RDI+16] SHADOWID 1 422c72 2 INSTR FPTRCHECK RAX SHADOWID 1 422cd0 59 FUNC RETURNTYPE RAX 0 422cd0 59 FUNC INARGS 6 ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 diff --git a/tests/commit/save-nginx.psexe.infoannot b/tests/commit/save-nginx.psexe.infoannot index 3f5d7768778917611f37b6f25506e771f4d12778..15d41db6c58d6e50b9caa1e6af55df1493c908ed 100644 --- a/tests/commit/save-nginx.psexe.infoannot +++ b/tests/commit/save-nginx.psexe.infoannot @@ -4229,7 +4229,7 @@ 468fc9 4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RBX+4 ZZ lea rsi, [len+4] ; size 4692cd 4 INSTR CHECK OVERFLOW UNSIGNED 64 RDI ZZ IDIOM 18 MEMORYSINK add rdi, 2 ; dest 4690a8 3 INSTR FPTRSHADOW RAX SHADOWID 4 - 469155 2 INSTR FPTRCHECK [EAX] SHADOWID 4 + 469155 2 INSTR FPTRCHECK [RAX] SHADOWID 4 469453 3920 FUNC RETURNTYPE RAX 1 469453 3920 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 0 ARG4 0 ARG5 0 46980a 7 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RBX+192 ZZ IDIOM 18 MEMORYSINK lea rsi, [conf+0C0h]; path @@ -5442,7 +5442,7 @@ 485630 284 FUNC RETURNTYPE RAX 1 485630 284 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 96 ARG3 96 ARG4 96 ARG5 96 485630 284 FUNC PROBLEM SSL_srp_server_param_with_username CALLUNRESOLVED - 485659 7 INSTR FPTRSHADOW [EDI+688] SHADOWID 6 + 485659 7 INSTR FPTRSHADOW [RDI+688] SHADOWID 6 485672 2 INSTR FPTRCHECK RAX SHADOWID 6 485750 231 FUNC RETURNTYPE RAX 1 485750 231 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 4 ARG4 4 ARG5 4 @@ -5602,9 +5602,9 @@ 489474 5 INSTR CHECK OVERFLOW NOFLAGUNKNOWNSIGN 64 R13+RDX+20 ZZ IDIOM 18 MEMORYSINK lea rsi, [r13+rdx+14h] 4894e3 4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R13+8 ZZ IDIOM 18 MEMORYSINK lea rsi, [r13+8] ; src 4894e7 2 INSTR CHECK SIGNEDNESS UNSIGNED 32 ECX ZZ mov edx, ecx ; n - 489065 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 7 + 489065 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 7 48908f 2 INSTR FPTRCHECK RAX SHADOWID 7 - 48827c 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 8 + 48827c 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 8 4882a9 3 INSTR FPTRCHECK R10 SHADOWID 8 489900 6 FUNC RETURNTYPE RAX 1 489900 6 FUNC INARGS 6 ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -6058,9 +6058,9 @@ 49b735 7 INSTR CHECK OVERFLOW UNSIGNED 64 RSI ZZ IDIOM 18 MEMORYSINK add rsi, [rbp+130h] ; src 49b73c 3 INSTR CHECK SIGNEDNESS UNSIGNED 64 R12 ZZ mov edx, r12d ; n 49b911 8 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+1000 ZZ IDIOM 32 lea edx, [r12+3E8h] - 49aac8 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 9 + 49aac8 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 9 49ab11 2 INSTR FPTRCHECK RAX SHADOWID 9 - 49b4b1 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 10 + 49b4b1 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 10 49b4e4 2 INSTR FPTRCHECK RAX SHADOWID 10 49bae0 287 FUNC RETURNTYPE RAX 96 49bae0 287 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 4 @@ -6110,7 +6110,7 @@ 49c650 1038 FUNC PROBLEM ssl3_get_message CALLUNRESOLVED 49c771 3 INSTR CHECK OVERFLOW SIGNED 32 RDX ZZ add edx, 4 49c96b 3 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RCX+4 ZZ lea esi, [rcx+4] - 49c830 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 11 + 49c830 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 11 49c7ec 2 INSTR FPTRCHECK RAX SHADOWID 11 49ca60 157 FUNC RETURNTYPE RAX 1 49ca60 157 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 96 ARG3 96 ARG4 96 ARG5 96 @@ -6318,9 +6318,9 @@ 4a2a2b 7 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RCX+632 ZZ IDIOM 18 MEMORYSINK lea rsi, [rcx+278h] 4a3236 7 INSTR CHECK OVERFLOW UNSIGNED 64 RSI ZZ IDIOM 18 MEMORYSINK add rsi, [r13+130h] ; src 4a32b9 8 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+1000 ZZ IDIOM 32 lea edx, [r12+3E8h] - 4a2add 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 12 + 4a2add 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 12 4a2b27 2 INSTR FPTRCHECK RAX SHADOWID 12 - 4a3003 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 13 + 4a3003 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 13 4a3035 2 INSTR FPTRCHECK RAX SHADOWID 13 4a3500 238 FUNC RETURNTYPE RAX 1 4a3500 238 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -7362,7 +7362,7 @@ 4bbf20 79 FUNC RETURNTYPE RAX 1 4bbf20 79 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4bbf20 79 FUNC PROBLEM RSA_set_method CALLUNRESOLVED - 4bbf51 4 INSTR FPTRSHADOW [EBP+56] SHADOWID 14 + 4bbf51 4 INSTR FPTRSHADOW [RBP+56] SHADOWID 14 4bbf61 2 INSTR FPTRCHECK RAX SHADOWID 14 4bbf70 587 FUNC RETURNTYPE RAX 4 4bbf70 587 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 1 ARG5 0 @@ -7539,7 +7539,7 @@ 4be450 91 FUNC RETURNTYPE RAX 1 4be450 91 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4be450 91 FUNC PROBLEM DH_set_method CALLUNRESOLVED - 4be48a 4 INSTR FPTRSHADOW [EBP+32] SHADOWID 15 + 4be48a 4 INSTR FPTRSHADOW [RBP+32] SHADOWID 15 4be49d 2 INSTR FPTRCHECK RAX SHADOWID 15 4be4b0 440 FUNC RETURNTYPE RAX 4 4be4b0 440 FUNC INARGS 6 ARG0 0 ARG1 0 ARG2 0 ARG3 1 ARG4 96 ARG5 96 @@ -9290,42 +9290,42 @@ 4d6c60 110 FUNC RETURNTYPE RAX 1 4d6c60 110 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 0 ARG3 1 ARG4 96 ARG5 1 4d6c60 110 FUNC PROBLEM EVP_PKEY_sign_init CALLUNRESOLVED - 4d6c78 4 INSTR FPTRSHADOW [EAX+64] SHADOWID 17 + 4d6c78 4 INSTR FPTRSHADOW [RAX+64] SHADOWID 17 4d6c8d 2 INSTR FPTRCHECK RDX SHADOWID 17 4d6cd0 294 FUNC RETURNTYPE RAX 0 4d6cd0 294 FUNC PROBLEM EVP_PKEY_sign JUMPUNRESOLVED 4d6e00 110 FUNC RETURNTYPE RAX 1 4d6e00 110 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 0 ARG3 1 ARG4 96 ARG5 1 4d6e00 110 FUNC PROBLEM EVP_PKEY_verify_init CALLUNRESOLVED - 4d6e18 4 INSTR FPTRSHADOW [EAX+80] SHADOWID 18 + 4d6e18 4 INSTR FPTRSHADOW [RAX+80] SHADOWID 18 4d6e2d 2 INSTR FPTRCHECK RDX SHADOWID 18 4d6e70 134 FUNC RETURNTYPE RAX 0 4d6e70 134 FUNC PROBLEM EVP_PKEY_verify JUMPUNRESOLVED 4d6f00 110 FUNC RETURNTYPE RAX 1 4d6f00 110 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4d6f00 110 FUNC PROBLEM EVP_PKEY_verify_recover_init CALLUNRESOLVED - 4d6f18 4 INSTR FPTRSHADOW [EAX+96] SHADOWID 19 + 4d6f18 4 INSTR FPTRSHADOW [RAX+96] SHADOWID 19 4d6f2d 2 INSTR FPTRCHECK RDX SHADOWID 19 4d6f70 294 FUNC RETURNTYPE RAX 0 4d6f70 294 FUNC PROBLEM EVP_PKEY_verify_recover JUMPUNRESOLVED 4d70a0 126 FUNC RETURNTYPE RAX 1 4d70a0 126 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 4 ARG5 1 4d70a0 126 FUNC PROBLEM EVP_PKEY_encrypt_init CALLUNRESOLVED - 4d70bb 7 INSTR FPTRSHADOW [EAX+144] SHADOWID 20 + 4d70bb 7 INSTR FPTRSHADOW [RAX+144] SHADOWID 20 4d70d3 2 INSTR FPTRCHECK RDX SHADOWID 20 4d7120 294 FUNC RETURNTYPE RAX 0 4d7120 294 FUNC PROBLEM EVP_PKEY_encrypt JUMPUNRESOLVED 4d7250 126 FUNC RETURNTYPE RAX 1 4d7250 126 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 4 ARG5 1 4d7250 126 FUNC PROBLEM EVP_PKEY_decrypt_init CALLUNRESOLVED - 4d726b 7 INSTR FPTRSHADOW [EAX+160] SHADOWID 21 + 4d726b 7 INSTR FPTRSHADOW [RAX+160] SHADOWID 21 4d7283 2 INSTR FPTRCHECK RDX SHADOWID 21 4d72d0 294 FUNC RETURNTYPE RAX 0 4d72d0 294 FUNC PROBLEM EVP_PKEY_decrypt JUMPUNRESOLVED 4d7400 126 FUNC RETURNTYPE RAX 1 4d7400 126 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4d7400 126 FUNC PROBLEM EVP_PKEY_derive_init CALLUNRESOLVED - 4d741b 7 INSTR FPTRSHADOW [EAX+176] SHADOWID 22 + 4d741b 7 INSTR FPTRSHADOW [RAX+176] SHADOWID 22 4d7433 2 INSTR FPTRCHECK RDX SHADOWID 22 4d7480 562 FUNC RETURNTYPE RAX 1 4d7480 562 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 96 ARG5 96 @@ -9338,7 +9338,7 @@ 4d7800 110 FUNC RETURNTYPE RAX 1 4d7800 110 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4d7800 110 FUNC PROBLEM EVP_PKEY_paramgen_init CALLUNRESOLVED - 4d7818 4 INSTR FPTRSHADOW [EAX+32] SHADOWID 23 + 4d7818 4 INSTR FPTRSHADOW [RAX+32] SHADOWID 23 4d782d 2 INSTR FPTRCHECK RDX SHADOWID 23 4d7870 259 FUNC RETURNTYPE RAX 1 4d7870 259 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -9346,7 +9346,7 @@ 4d7980 110 FUNC RETURNTYPE RAX 1 4d7980 110 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4d7980 110 FUNC PROBLEM EVP_PKEY_keygen_init CALLUNRESOLVED - 4d7998 4 INSTR FPTRSHADOW [EAX+48] SHADOWID 24 + 4d7998 4 INSTR FPTRSHADOW [RAX+48] SHADOWID 24 4d79ad 2 INSTR FPTRCHECK RDX SHADOWID 24 4d79f0 259 FUNC RETURNTYPE RAX 1 4d79f0 259 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 1 ARG4 96 ARG5 96 @@ -9362,7 +9362,7 @@ 4d7b70 225 FUNC RETURNTYPE RAX 1 4d7b70 225 FUNC INARGS 6 ARG0 1 ARG1 1 ARG2 4 ARG3 0 ARG4 96 ARG5 96 4d7b70 225 FUNC PROBLEM EVP_PKEY_new_mac_key CALLUNRESOLVED - 4d7bb3 4 INSTR FPTRSHADOW [EAX+48] SHADOWID 25 + 4d7bb3 4 INSTR FPTRSHADOW [RAX+48] SHADOWID 25 4d7bc6 2 INSTR FPTRCHECK RAX SHADOWID 25 4d7c60 454 FUNC RETURNTYPE RAX 1 4d7c60 454 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 1 ARG4 96 ARG5 1 @@ -11864,7 +11864,7 @@ 5014e0 270 FUNC RETURNTYPE RAX 96 5014e0 270 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 96 ARG5 96 5014e0 270 FUNC PROBLEM COMP_CTX_new CALLUNRESOLVED - 501542 4 INSTR FPTRSHADOW [EBX+16] SHADOWID 26 + 501542 4 INSTR FPTRSHADOW [RBX+16] SHADOWID 26 501552 2 INSTR FPTRCHECK RAX SHADOWID 26 5015f0 34 FUNC RETURNTYPE RAX 96 5015f0 34 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 4 ARG3 1 ARG4 4 ARG5 96 @@ -12577,11 +12577,11 @@ 5221f0 496 FUNC PROBLEM CRYPTO_gcm128_setiv CALLUNRESOLVED 522285 4 INSTR CHECK UNDERFLOW UNSIGNED 64 R13 ZZ IDIOM 31 sub r13, 10h 522358 4 INSTR CHECK OVERFLOW UNSIGNED 64 RAX ZZ add rax, 1 - 522208 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 27 + 522208 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 27 52231c 3 INSTR FPTRCHECK R14 SHADOWID 27 - 522208 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 28 + 522208 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 28 522367 3 INSTR FPTRCHECK R14 SHADOWID 28 - 522208 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 29 + 522208 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 29 522380 3 INSTR FPTRCHECK R14 SHADOWID 29 5223e0 411 FUNC RETURNTYPE RAX 1 5223e0 411 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 1 ARG3 0 ARG4 96 ARG5 96 @@ -13507,7 +13507,7 @@ 540520 85 FUNC RETURNTYPE RAX 1 540520 85 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 540520 85 FUNC PROBLEM DSA_set_method CALLUNRESOLVED - 540557 4 INSTR FPTRSHADOW [EBP+48] SHADOWID 31 + 540557 4 INSTR FPTRSHADOW [RBP+48] SHADOWID 31 540567 2 INSTR FPTRCHECK RAX SHADOWID 31 540580 518 FUNC RETURNTYPE RAX 4 540580 518 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 1 ARG5 0 @@ -13769,7 +13769,7 @@ 5458c0 450 FUNC RETURNTYPE RAX 96 5458c0 450 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 96 ARG4 96 ARG5 4 5458c0 450 FUNC PROBLEM DSO_new_method CALLUNRESOLVED - 545958 4 INSTR FPTRSHADOW [EBP+64] SHADOWID 32 + 545958 4 INSTR FPTRSHADOW [RBP+64] SHADOWID 32 545967 2 INSTR FPTRCHECK RAX SHADOWID 32 545a90 7 FUNC RETURNTYPE RAX 4 545a90 7 FUNC INARGS 6 ARG0 0 ARG1 4 ARG2 0 ARG3 4 ARG4 0 ARG5 4 diff --git a/tests/commit/save-openssl.psexe.infoannot b/tests/commit/save-openssl.psexe.infoannot index 6466a662a99c4f80ba62b31ddbb687da4d1642ea..eba7330c1e3eb465d5ddbdd575fff0a0e641b5cc 100644 --- a/tests/commit/save-openssl.psexe.infoannot +++ b/tests/commit/save-openssl.psexe.infoannot @@ -1078,9 +1078,9 @@ 4509e4 5 INSTR CHECK OVERFLOW NOFLAGUNKNOWNSIGN 64 R13+RDX+20 ZZ IDIOM 18 MEMORYSINK lea rsi, [r13+rdx+14h] 450a53 4 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R13+8 ZZ IDIOM 18 MEMORYSINK lea rsi, [r13+8] ; src 450a57 2 INSTR CHECK SIGNEDNESS UNSIGNED 32 ECX ZZ mov edx, ecx ; n - 4505d5 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 1 + 4505d5 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 1 4505ff 2 INSTR FPTRCHECK RAX SHADOWID 1 - 44f7ec 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 2 + 44f7ec 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 2 44f819 3 INSTR FPTRCHECK R10 SHADOWID 2 450e70 6 FUNC RETURNTYPE RAX 1 450e70 6 FUNC INARGS 6 ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -1530,9 +1530,9 @@ 462c35 7 INSTR CHECK OVERFLOW UNSIGNED 64 RSI ZZ IDIOM 18 MEMORYSINK add rsi, [rbp+130h] ; src 462c3c 3 INSTR CHECK SIGNEDNESS UNSIGNED 64 R12 ZZ mov edx, r12d ; n 462df1 8 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+1000 ZZ IDIOM 32 lea edx, [r12+3E8h] - 461fc8 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 3 + 461fc8 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 3 462011 2 INSTR FPTRCHECK RAX SHADOWID 3 - 4629b1 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 4 + 4629b1 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 4 4629e4 2 INSTR FPTRCHECK RAX SHADOWID 4 462fc0 287 FUNC RETURNTYPE RAX 96 462fc0 287 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -1583,7 +1583,7 @@ 463b10 1030 FUNC PROBLEM ssl3_get_message CALLUNRESOLVED 463c31 3 INSTR CHECK OVERFLOW SIGNED 32 RDX ZZ add edx, 4 463e23 3 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 RCX+4 ZZ lea esi, [rcx+4] - 463cf0 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 5 + 463cf0 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 5 463cac 2 INSTR FPTRCHECK RAX SHADOWID 5 463f20 157 FUNC RETURNTYPE RAX 1 463f20 157 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 96 ARG3 96 ARG4 96 ARG5 96 @@ -2033,9 +2033,9 @@ 473012 8 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+632 ZZ IDIOM 18 MEMORYSINK lea rsi, [r12+278h] 473876 7 INSTR CHECK OVERFLOW UNSIGNED 64 RSI ZZ IDIOM 18 MEMORYSINK add rsi, [r13+130h] ; src 473996 8 INSTR CHECK OVERFLOW NOFLAGUNSIGNED 64 R12+1000 ZZ IDIOM 32 lea edx, [r12+3E8h] - 4730b5 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 6 + 4730b5 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 6 4730ff 2 INSTR FPTRCHECK RAX SHADOWID 6 - 473643 7 INSTR FPTRSHADOW [EBX+152] SHADOWID 7 + 473643 7 INSTR FPTRSHADOW [RBX+152] SHADOWID 7 473675 2 INSTR FPTRCHECK RAX SHADOWID 7 473b40 238 FUNC RETURNTYPE RAX 1 473b40 238 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 @@ -2940,7 +2940,7 @@ 488750 284 FUNC RETURNTYPE RAX 1 488750 284 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 96 ARG3 96 ARG4 96 ARG5 96 488750 284 FUNC PROBLEM SSL_srp_server_param_with_username CALLUNRESOLVED - 488779 7 INSTR FPTRSHADOW [EDI+688] SHADOWID 9 + 488779 7 INSTR FPTRSHADOW [RDI+688] SHADOWID 9 488792 2 INSTR FPTRCHECK RAX SHADOWID 9 488870 231 FUNC RETURNTYPE RAX 1 488870 231 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 4 ARG4 4 ARG5 4 @@ -3756,11 +3756,11 @@ 4acc80 496 FUNC PROBLEM CRYPTO_gcm128_setiv CALLUNRESOLVED 4acd15 4 INSTR CHECK UNDERFLOW UNSIGNED 64 R13 ZZ IDIOM 31 sub r13, 10h 4acde8 4 INSTR CHECK OVERFLOW UNSIGNED 64 RAX ZZ add rax, 1 - 4acc98 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 10 + 4acc98 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 10 4acdac 3 INSTR FPTRCHECK R14 SHADOWID 10 - 4acc98 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 11 + 4acc98 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 11 4acdf7 3 INSTR FPTRCHECK R14 SHADOWID 11 - 4acc98 7 INSTR FPTRSHADOW [EDI+352] SHADOWID 12 + 4acc98 7 INSTR FPTRSHADOW [RDI+352] SHADOWID 12 4ace10 3 INSTR FPTRCHECK R14 SHADOWID 12 4ace70 411 FUNC RETURNTYPE RAX 1 4ace70 411 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 1 ARG3 0 ARG4 1 ARG5 96 @@ -4853,7 +4853,7 @@ 4cb180 79 FUNC RETURNTYPE RAX 1 4cb180 79 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4cb180 79 FUNC PROBLEM RSA_set_method CALLUNRESOLVED - 4cb1b1 4 INSTR FPTRSHADOW [EBP+56] SHADOWID 14 + 4cb1b1 4 INSTR FPTRSHADOW [RBP+56] SHADOWID 14 4cb1c1 2 INSTR FPTRCHECK RAX SHADOWID 14 4cb1d0 587 FUNC RETURNTYPE RAX 4 4cb1d0 587 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 1 ARG5 96 @@ -5045,7 +5045,7 @@ 4cf7c0 85 FUNC RETURNTYPE RAX 1 4cf7c0 85 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4cf7c0 85 FUNC PROBLEM DSA_set_method CALLUNRESOLVED - 4cf7f7 4 INSTR FPTRSHADOW [EBP+48] SHADOWID 15 + 4cf7f7 4 INSTR FPTRSHADOW [RBP+48] SHADOWID 15 4cf807 2 INSTR FPTRCHECK RAX SHADOWID 15 4cf820 518 FUNC RETURNTYPE RAX 4 4cf820 518 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 1 ARG5 0 @@ -5184,7 +5184,7 @@ 4d1950 91 FUNC RETURNTYPE RAX 1 4d1950 91 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 0 ARG5 0 4d1950 91 FUNC PROBLEM DH_set_method CALLUNRESOLVED - 4d198a 4 INSTR FPTRSHADOW [EBP+32] SHADOWID 16 + 4d198a 4 INSTR FPTRSHADOW [RBP+32] SHADOWID 16 4d199d 2 INSTR FPTRCHECK RAX SHADOWID 16 4d19b0 440 FUNC RETURNTYPE RAX 4 4d19b0 440 FUNC INARGS 6 ARG0 0 ARG1 0 ARG2 0 ARG3 1 ARG4 96 ARG5 96 @@ -7421,42 +7421,42 @@ 4f5b60 110 FUNC RETURNTYPE RAX 1 4f5b60 110 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f5b60 110 FUNC PROBLEM EVP_PKEY_sign_init CALLUNRESOLVED - 4f5b78 4 INSTR FPTRSHADOW [EAX+64] SHADOWID 18 + 4f5b78 4 INSTR FPTRSHADOW [RAX+64] SHADOWID 18 4f5b8d 2 INSTR FPTRCHECK RDX SHADOWID 18 4f5bd0 294 FUNC RETURNTYPE RAX 0 4f5bd0 294 FUNC PROBLEM EVP_PKEY_sign JUMPUNRESOLVED 4f5d00 110 FUNC RETURNTYPE RAX 1 4f5d00 110 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f5d00 110 FUNC PROBLEM EVP_PKEY_verify_init CALLUNRESOLVED - 4f5d18 4 INSTR FPTRSHADOW [EAX+80] SHADOWID 19 + 4f5d18 4 INSTR FPTRSHADOW [RAX+80] SHADOWID 19 4f5d2d 2 INSTR FPTRCHECK RDX SHADOWID 19 4f5d70 134 FUNC RETURNTYPE RAX 0 4f5d70 134 FUNC PROBLEM EVP_PKEY_verify JUMPUNRESOLVED 4f5e00 110 FUNC RETURNTYPE RAX 1 4f5e00 110 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f5e00 110 FUNC PROBLEM EVP_PKEY_verify_recover_init CALLUNRESOLVED - 4f5e18 4 INSTR FPTRSHADOW [EAX+96] SHADOWID 20 + 4f5e18 4 INSTR FPTRSHADOW [RAX+96] SHADOWID 20 4f5e2d 2 INSTR FPTRCHECK RDX SHADOWID 20 4f5e70 294 FUNC RETURNTYPE RAX 0 4f5e70 294 FUNC PROBLEM EVP_PKEY_verify_recover JUMPUNRESOLVED 4f5fa0 126 FUNC RETURNTYPE RAX 1 4f5fa0 126 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f5fa0 126 FUNC PROBLEM EVP_PKEY_encrypt_init CALLUNRESOLVED - 4f5fbb 7 INSTR FPTRSHADOW [EAX+144] SHADOWID 21 + 4f5fbb 7 INSTR FPTRSHADOW [RAX+144] SHADOWID 21 4f5fd3 2 INSTR FPTRCHECK RDX SHADOWID 21 4f6020 294 FUNC RETURNTYPE RAX 0 4f6020 294 FUNC PROBLEM EVP_PKEY_encrypt JUMPUNRESOLVED 4f6150 126 FUNC RETURNTYPE RAX 1 4f6150 126 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f6150 126 FUNC PROBLEM EVP_PKEY_decrypt_init CALLUNRESOLVED - 4f616b 7 INSTR FPTRSHADOW [EAX+160] SHADOWID 22 + 4f616b 7 INSTR FPTRSHADOW [RAX+160] SHADOWID 22 4f6183 2 INSTR FPTRCHECK RDX SHADOWID 22 4f61d0 294 FUNC RETURNTYPE RAX 0 4f61d0 294 FUNC PROBLEM EVP_PKEY_decrypt JUMPUNRESOLVED 4f6300 126 FUNC RETURNTYPE RAX 1 4f6300 126 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 1 ARG4 96 ARG5 96 4f6300 126 FUNC PROBLEM EVP_PKEY_derive_init CALLUNRESOLVED - 4f631b 7 INSTR FPTRSHADOW [EAX+176] SHADOWID 23 + 4f631b 7 INSTR FPTRSHADOW [RAX+176] SHADOWID 23 4f6333 2 INSTR FPTRCHECK RDX SHADOWID 23 4f6380 562 FUNC RETURNTYPE RAX 1 4f6380 562 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 0 ARG4 96 ARG5 96 @@ -7469,7 +7469,7 @@ 4f6700 110 FUNC RETURNTYPE RAX 1 4f6700 110 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 96 ARG4 4 ARG5 96 4f6700 110 FUNC PROBLEM EVP_PKEY_paramgen_init CALLUNRESOLVED - 4f6718 4 INSTR FPTRSHADOW [EAX+32] SHADOWID 24 + 4f6718 4 INSTR FPTRSHADOW [RAX+32] SHADOWID 24 4f672d 2 INSTR FPTRCHECK RDX SHADOWID 24 4f6770 259 FUNC RETURNTYPE RAX 1 4f6770 259 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 1 ARG4 96 ARG5 96 @@ -7477,7 +7477,7 @@ 4f6880 110 FUNC RETURNTYPE RAX 1 4f6880 110 FUNC INARGS 6 ARG0 4 ARG1 1 ARG2 0 ARG3 96 ARG4 96 ARG5 96 4f6880 110 FUNC PROBLEM EVP_PKEY_keygen_init CALLUNRESOLVED - 4f6898 4 INSTR FPTRSHADOW [EAX+48] SHADOWID 25 + 4f6898 4 INSTR FPTRSHADOW [RAX+48] SHADOWID 25 4f68ad 2 INSTR FPTRCHECK RDX SHADOWID 25 4f68f0 259 FUNC RETURNTYPE RAX 1 4f68f0 259 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 0 ARG3 1 ARG4 96 ARG5 96 @@ -7493,7 +7493,7 @@ 4f6a70 225 FUNC RETURNTYPE RAX 1 4f6a70 225 FUNC INARGS 6 ARG0 1 ARG1 96 ARG2 4 ARG3 1 ARG4 4 ARG5 96 4f6a70 225 FUNC PROBLEM EVP_PKEY_new_mac_key CALLUNRESOLVED - 4f6ab3 4 INSTR FPTRSHADOW [EAX+48] SHADOWID 26 + 4f6ab3 4 INSTR FPTRSHADOW [RAX+48] SHADOWID 26 4f6ac6 2 INSTR FPTRCHECK RAX SHADOWID 26 4f6b60 454 FUNC RETURNTYPE RAX 1 4f6b60 454 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 96 ARG4 96 ARG5 1 @@ -11109,7 +11109,7 @@ 539550 270 FUNC RETURNTYPE RAX 96 539550 270 FUNC INARGS 6 ARG0 4 ARG1 0 ARG2 0 ARG3 1 ARG4 96 ARG5 96 539550 270 FUNC PROBLEM COMP_CTX_new CALLUNRESOLVED - 5395b2 4 INSTR FPTRSHADOW [EBX+16] SHADOWID 28 + 5395b2 4 INSTR FPTRSHADOW [RBX+16] SHADOWID 28 5395c2 2 INSTR FPTRCHECK RAX SHADOWID 28 539660 34 FUNC RETURNTYPE RAX 96 539660 34 FUNC INARGS 6 ARG0 4 ARG1 96 ARG2 4 ARG3 1 ARG4 4 ARG5 96 @@ -13716,7 +13716,7 @@ 57ed70 450 FUNC RETURNTYPE RAX 96 57ed70 450 FUNC INARGS 6 ARG0 4 ARG1 4 ARG2 4 ARG3 96 ARG4 96 ARG5 96 57ed70 450 FUNC PROBLEM DSO_new_method CALLUNRESOLVED - 57ee08 4 INSTR FPTRSHADOW [EBP+64] SHADOWID 30 + 57ee08 4 INSTR FPTRSHADOW [RBP+64] SHADOWID 30 57ee17 2 INSTR FPTRCHECK RAX SHADOWID 30 57ef40 7 FUNC RETURNTYPE RAX 4 57ef40 7 FUNC INARGS 6 ARG0 0 ARG1 4 ARG2 0 ARG3 4 ARG4 0 ARG5 0