@@ -17853,32 +17853,32 @@ namespace BinaryNinja {
1785317853 static void GetParameterVariableForIncomingVariableCallback(
1785417854 void* ctxt, const BNVariable* var, BNFunction* func, BNVariable* result);
1785517855
17856- static bool IsReturnTypeRegisterCompatibleCallback(void* ctxt, BNType* type);
17856+ static bool IsReturnTypeRegisterCompatibleCallback(void* ctxt, BNBinaryView* view, BNType* type);
1785717857 static void GetIndirectReturnValueLocationCallback(void* ctxt, BNVariable* outVar);
1785817858 static bool GetReturnedIndirectReturnValuePointerCallback(void* ctxt, BNVariable* outVar);
1785917859
17860- static bool IsArgumentTypeRegisterCompatibleCallback(void* ctxt, BNType* type);
17861- static bool IsNonRegisterArgumentIndirectCallback(void* ctxt, BNType* type);
17860+ static bool IsArgumentTypeRegisterCompatibleCallback(void* ctxt, BNBinaryView* view, BNType* type);
17861+ static bool IsNonRegisterArgumentIndirectCallback(void* ctxt, BNBinaryView* view, BNType* type);
1786217862 static bool AreStackArgumentsNaturallyAlignedCallback(void* ctxt);
1786317863 static bool AreStackArgumentsPushedLeftToRightCallback(void* ctxt);
1786417864
17865- static void GetCallLayoutCallback(void* ctxt, BNReturnValue* returnValue, BNFunctionParameter* params ,
17866- size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs, size_t permittedRegCount ,
17867- BNCallLayout* result);
17865+ static void GetCallLayoutCallback(void* ctxt, BNBinaryView* view, BNReturnValue* returnValue ,
17866+ BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs,
17867+ size_t permittedRegCount, BNCallLayout* result);
1786817868 static void FreeCallLayoutCallback(void* ctxt, BNCallLayout* layout);
1786917869 static void GetReturnValueLocationCallback(
17870- void* ctxt, BNReturnValue* returnValue, BNValueLocation* outLocation);
17870+ void* ctxt, BNBinaryView* view, BNReturnValue* returnValue, BNValueLocation* outLocation);
1787117871 static void FreeValueLocationCallback(void* ctxt, BNValueLocation* location);
17872- static BNValueLocation* GetParameterLocationsCallback(void* ctxt, BNValueLocation* returnValue ,
17873- BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs ,
17874- size_t permittedRegCount, size_t* outLocationCount);
17872+ static BNValueLocation* GetParameterLocationsCallback(void* ctxt, BNBinaryView* view ,
17873+ BNValueLocation* returnValue, BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs,
17874+ uint32_t* permittedRegs, size_t permittedRegCount, size_t* outLocationCount);
1787517875 static void FreeParameterLocationsCallback(void* ctxt, BNValueLocation* locations, size_t count);
1787617876 static BNVariable* GetParameterOrderingForVariablesCallback(
17877- void* ctxt, BNVariable* vars, BNType** types, size_t paramCount, size_t* outCount);
17877+ void* ctxt, BNBinaryView* view, BNVariable* vars, BNType** types, size_t paramCount, size_t* outCount);
1787817878 static void FreeVariableListCallback(void* ctxt, BNVariable* vars, size_t count);
17879- static int64_t GetStackAdjustmentForLocationsCallback(
17880- void* ctxt, BNValueLocation* returnValue, BNValueLocation* locations, BNType** types, size_t paramCount);
17881- static size_t GetRegisterStackAdjustmentsCallback(void* ctxt, BNValueLocation* returnValue,
17879+ static int64_t GetStackAdjustmentForLocationsCallback(void* ctxt, BNBinaryView* view,
17880+ BNValueLocation* returnValue, BNValueLocation* locations, BNType** types, size_t paramCount);
17881+ static size_t GetRegisterStackAdjustmentsCallback(void* ctxt, BNBinaryView* view, BNValueLocation* returnValue,
1788217882 BNValueLocation* params, size_t paramCount, uint32_t** outRegs, int32_t** outAdjust);
1788317883 static void FreeRegisterStackAdjustmentsCallback(void* ctxt, uint32_t* regs, int32_t* adjust, size_t count);
1788417884
@@ -17924,36 +17924,40 @@ namespace BinaryNinja {
1792417924 virtual Variable GetIncomingVariableForParameterVariable(const Variable& var, Function* func);
1792517925 virtual Variable GetParameterVariableForIncomingVariable(const Variable& var, Function* func);
1792617926
17927- virtual bool IsReturnTypeRegisterCompatible(Type* type);
17927+ virtual bool IsReturnTypeRegisterCompatible(BinaryView* view, Type* type);
1792817928 bool DefaultIsReturnTypeRegisterCompatible(Type* type);
1792917929 virtual Variable GetIndirectReturnValueLocation();
1793017930 Variable GetDefaultIndirectReturnValueLocation();
1793117931 virtual std::optional<Variable> GetReturnedIndirectReturnValuePointer();
1793217932
17933- virtual bool IsArgumentTypeRegisterCompatible(Type* type);
17933+ virtual bool IsArgumentTypeRegisterCompatible(BinaryView* view, Type* type);
1793417934 bool DefaultIsArgumentTypeRegisterCompatible(Type* type);
17935- virtual bool IsNonRegisterArgumentIndirect(Type* type);
17935+ virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type);
1793617936 virtual bool AreStackArgumentsNaturallyAligned();
1793717937 virtual bool AreStackArgumentsPushedLeftToRight();
1793817938
17939- virtual CallLayout GetCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
17940- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17941- virtual ValueLocation GetReturnValueLocation(const ReturnValue& returnValue);
17942- virtual std::vector<ValueLocation> GetParameterLocations(const std::optional<ValueLocation>& returnValue,
17939+ virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue,
1794317940 const std::vector<FunctionParameter>& params,
1794417941 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17945- virtual std::vector<Variable> GetParameterOrderingForVariables(const std::map<Variable, Ref<Type>>& params);
17946- virtual int64_t GetStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
17947- const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types);
17948- virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(
17942+ virtual ValueLocation GetReturnValueLocation(BinaryView* view, const ReturnValue& returnValue);
17943+ virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view,
17944+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
17945+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17946+ virtual std::vector<Variable> GetParameterOrderingForVariables(
17947+ BinaryView* view, const std::map<Variable, Ref<Type>>& params);
17948+ virtual int64_t GetStackAdjustmentForLocations(BinaryView* view,
17949+ const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations,
17950+ const std::vector<Ref<Type>>& types);
17951+ virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(BinaryView* view,
1794917952 const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& params);
1795017953
17951- CallLayout GetDefaultCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
17952- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17953- ValueLocation GetDefaultReturnValueLocation(const ReturnValue& returnValue);
17954- std::vector<ValueLocation> GetDefaultParameterLocations(const std::optional<ValueLocation>& returnValue,
17954+ CallLayout GetDefaultCallLayout(BinaryView* view, const ReturnValue& returnValue,
1795517955 const std::vector<FunctionParameter>& params,
1795617956 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17957+ ValueLocation GetDefaultReturnValueLocation(BinaryView* view, const ReturnValue& returnValue);
17958+ std::vector<ValueLocation> GetDefaultParameterLocations(BinaryView* view,
17959+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
17960+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
1795717961 std::vector<Variable> GetDefaultParameterOrderingForVariables(const std::map<Variable, Ref<Type>>& params);
1795817962 int64_t GetDefaultStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
1795917963 const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types);
@@ -17994,26 +17998,28 @@ namespace BinaryNinja {
1799417998 virtual Variable GetIncomingVariableForParameterVariable(const Variable& var, Function* func) override;
1799517999 virtual Variable GetParameterVariableForIncomingVariable(const Variable& var, Function* func) override;
1799618000
17997- virtual bool IsReturnTypeRegisterCompatible(Type* type) override;
18001+ virtual bool IsReturnTypeRegisterCompatible(BinaryView* view, Type* type) override;
1799818002 virtual Variable GetIndirectReturnValueLocation() override;
1799918003 virtual std::optional<Variable> GetReturnedIndirectReturnValuePointer() override;
1800018004
18001- virtual bool IsArgumentTypeRegisterCompatible(Type* type) override;
18002- virtual bool IsNonRegisterArgumentIndirect(Type* type) override;
18005+ virtual bool IsArgumentTypeRegisterCompatible(BinaryView* view, Type* type) override;
18006+ virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type) override;
1800318007 virtual bool AreStackArgumentsNaturallyAligned() override;
1800418008 virtual bool AreStackArgumentsPushedLeftToRight() override;
1800518009
18006- virtual CallLayout GetCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
18007- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
18008- virtual ValueLocation GetReturnValueLocation(const ReturnValue& returnValue) override;
18009- virtual std::vector<ValueLocation> GetParameterLocations(const std::optional<ValueLocation>& returnValue,
18010+ virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue,
1801018011 const std::vector<FunctionParameter>& params,
1801118012 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
18013+ virtual ValueLocation GetReturnValueLocation(BinaryView* view, const ReturnValue& returnValue) override;
18014+ virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view,
18015+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
18016+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
1801218017 virtual std::vector<Variable> GetParameterOrderingForVariables(
18013- const std::map<Variable, Ref<Type>>& params) override;
18014- virtual int64_t GetStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
18015- const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types) override;
18016- virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(
18018+ BinaryView* view, const std::map<Variable, Ref<Type>>& params) override;
18019+ virtual int64_t GetStackAdjustmentForLocations(BinaryView* view,
18020+ const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations,
18021+ const std::vector<Ref<Type>>& types) override;
18022+ virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(BinaryView* view,
1801718023 const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& params) override;
1801818024 };
1801918025
0 commit comments