@@ -17902,32 +17902,32 @@ namespace BinaryNinja {
1790217902 static void GetParameterVariableForIncomingVariableCallback(
1790317903 void* ctxt, const BNVariable* var, BNFunction* func, BNVariable* result);
1790417904
17905- static bool IsReturnTypeRegisterCompatibleCallback(void* ctxt, BNType* type);
17905+ static bool IsReturnTypeRegisterCompatibleCallback(void* ctxt, BNBinaryView* view, BNType* type);
1790617906 static void GetIndirectReturnValueLocationCallback(void* ctxt, BNVariable* outVar);
1790717907 static bool GetReturnedIndirectReturnValuePointerCallback(void* ctxt, BNVariable* outVar);
1790817908
17909- static bool IsArgumentTypeRegisterCompatibleCallback(void* ctxt, BNType* type);
17910- static bool IsNonRegisterArgumentIndirectCallback(void* ctxt, BNType* type);
17909+ static bool IsArgumentTypeRegisterCompatibleCallback(void* ctxt, BNBinaryView* view, BNType* type);
17910+ static bool IsNonRegisterArgumentIndirectCallback(void* ctxt, BNBinaryView* view, BNType* type);
1791117911 static bool AreStackArgumentsNaturallyAlignedCallback(void* ctxt);
1791217912 static bool AreStackArgumentsPushedLeftToRightCallback(void* ctxt);
1791317913
17914- static void GetCallLayoutCallback(void* ctxt, BNReturnValue* returnValue, BNFunctionParameter* params ,
17915- size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs, size_t permittedRegCount ,
17916- BNCallLayout* result);
17914+ static void GetCallLayoutCallback(void* ctxt, BNBinaryView* view, BNReturnValue* returnValue ,
17915+ BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs,
17916+ size_t permittedRegCount, BNCallLayout* result);
1791717917 static void FreeCallLayoutCallback(void* ctxt, BNCallLayout* layout);
1791817918 static void GetReturnValueLocationCallback(
17919- void* ctxt, BNReturnValue* returnValue, BNValueLocation* outLocation);
17919+ void* ctxt, BNBinaryView* view, BNReturnValue* returnValue, BNValueLocation* outLocation);
1792017920 static void FreeValueLocationCallback(void* ctxt, BNValueLocation* location);
17921- static BNValueLocation* GetParameterLocationsCallback(void* ctxt, BNValueLocation* returnValue ,
17922- BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs ,
17923- size_t permittedRegCount, size_t* outLocationCount);
17921+ static BNValueLocation* GetParameterLocationsCallback(void* ctxt, BNBinaryView* view ,
17922+ BNValueLocation* returnValue, BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs,
17923+ uint32_t* permittedRegs, size_t permittedRegCount, size_t* outLocationCount);
1792417924 static void FreeParameterLocationsCallback(void* ctxt, BNValueLocation* locations, size_t count);
1792517925 static BNVariable* GetParameterOrderingForVariablesCallback(
17926- void* ctxt, BNVariable* vars, BNType** types, size_t paramCount, size_t* outCount);
17926+ void* ctxt, BNBinaryView* view, BNVariable* vars, BNType** types, size_t paramCount, size_t* outCount);
1792717927 static void FreeVariableListCallback(void* ctxt, BNVariable* vars, size_t count);
17928- static int64_t GetStackAdjustmentForLocationsCallback(
17929- void* ctxt, BNValueLocation* returnValue, BNValueLocation* locations, BNType** types, size_t paramCount);
17930- static size_t GetRegisterStackAdjustmentsCallback(void* ctxt, BNValueLocation* returnValue,
17928+ static int64_t GetStackAdjustmentForLocationsCallback(void* ctxt, BNBinaryView* view,
17929+ BNValueLocation* returnValue, BNValueLocation* locations, BNType** types, size_t paramCount);
17930+ static size_t GetRegisterStackAdjustmentsCallback(void* ctxt, BNBinaryView* view, BNValueLocation* returnValue,
1793117931 BNValueLocation* params, size_t paramCount, uint32_t** outRegs, int32_t** outAdjust);
1793217932 static void FreeRegisterStackAdjustmentsCallback(void* ctxt, uint32_t* regs, int32_t* adjust, size_t count);
1793317933
@@ -17973,36 +17973,40 @@ namespace BinaryNinja {
1797317973 virtual Variable GetIncomingVariableForParameterVariable(const Variable& var, Function* func);
1797417974 virtual Variable GetParameterVariableForIncomingVariable(const Variable& var, Function* func);
1797517975
17976- virtual bool IsReturnTypeRegisterCompatible(Type* type);
17976+ virtual bool IsReturnTypeRegisterCompatible(BinaryView* view, Type* type);
1797717977 bool DefaultIsReturnTypeRegisterCompatible(Type* type);
1797817978 virtual Variable GetIndirectReturnValueLocation();
1797917979 Variable GetDefaultIndirectReturnValueLocation();
1798017980 virtual std::optional<Variable> GetReturnedIndirectReturnValuePointer();
1798117981
17982- virtual bool IsArgumentTypeRegisterCompatible(Type* type);
17982+ virtual bool IsArgumentTypeRegisterCompatible(BinaryView* view, Type* type);
1798317983 bool DefaultIsArgumentTypeRegisterCompatible(Type* type);
17984- virtual bool IsNonRegisterArgumentIndirect(Type* type);
17984+ virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type);
1798517985 virtual bool AreStackArgumentsNaturallyAligned();
1798617986 virtual bool AreStackArgumentsPushedLeftToRight();
1798717987
17988- virtual CallLayout GetCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
17989- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17990- virtual ValueLocation GetReturnValueLocation(const ReturnValue& returnValue);
17991- virtual std::vector<ValueLocation> GetParameterLocations(const std::optional<ValueLocation>& returnValue,
17988+ virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue,
1799217989 const std::vector<FunctionParameter>& params,
1799317990 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17994- virtual std::vector<Variable> GetParameterOrderingForVariables(const std::map<Variable, Ref<Type>>& params);
17995- virtual int64_t GetStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
17996- const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types);
17997- virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(
17991+ virtual ValueLocation GetReturnValueLocation(BinaryView* view, const ReturnValue& returnValue);
17992+ virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view,
17993+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
17994+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
17995+ virtual std::vector<Variable> GetParameterOrderingForVariables(
17996+ BinaryView* view, const std::map<Variable, Ref<Type>>& params);
17997+ virtual int64_t GetStackAdjustmentForLocations(BinaryView* view,
17998+ const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations,
17999+ const std::vector<Ref<Type>>& types);
18000+ virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(BinaryView* view,
1799818001 const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& params);
1799918002
18000- CallLayout GetDefaultCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
18001- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
18002- ValueLocation GetDefaultReturnValueLocation(const ReturnValue& returnValue);
18003- std::vector<ValueLocation> GetDefaultParameterLocations(const std::optional<ValueLocation>& returnValue,
18003+ CallLayout GetDefaultCallLayout(BinaryView* view, const ReturnValue& returnValue,
1800418004 const std::vector<FunctionParameter>& params,
1800518005 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
18006+ ValueLocation GetDefaultReturnValueLocation(BinaryView* view, const ReturnValue& returnValue);
18007+ std::vector<ValueLocation> GetDefaultParameterLocations(BinaryView* view,
18008+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
18009+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt);
1800618010 std::vector<Variable> GetDefaultParameterOrderingForVariables(const std::map<Variable, Ref<Type>>& params);
1800718011 int64_t GetDefaultStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
1800818012 const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types);
@@ -18043,26 +18047,28 @@ namespace BinaryNinja {
1804318047 virtual Variable GetIncomingVariableForParameterVariable(const Variable& var, Function* func) override;
1804418048 virtual Variable GetParameterVariableForIncomingVariable(const Variable& var, Function* func) override;
1804518049
18046- virtual bool IsReturnTypeRegisterCompatible(Type* type) override;
18050+ virtual bool IsReturnTypeRegisterCompatible(BinaryView* view, Type* type) override;
1804718051 virtual Variable GetIndirectReturnValueLocation() override;
1804818052 virtual std::optional<Variable> GetReturnedIndirectReturnValuePointer() override;
1804918053
18050- virtual bool IsArgumentTypeRegisterCompatible(Type* type) override;
18051- virtual bool IsNonRegisterArgumentIndirect(Type* type) override;
18054+ virtual bool IsArgumentTypeRegisterCompatible(BinaryView* view, Type* type) override;
18055+ virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type) override;
1805218056 virtual bool AreStackArgumentsNaturallyAligned() override;
1805318057 virtual bool AreStackArgumentsPushedLeftToRight() override;
1805418058
18055- virtual CallLayout GetCallLayout(const ReturnValue& returnValue, const std::vector<FunctionParameter>& params,
18056- const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
18057- virtual ValueLocation GetReturnValueLocation(const ReturnValue& returnValue) override;
18058- virtual std::vector<ValueLocation> GetParameterLocations(const std::optional<ValueLocation>& returnValue,
18059+ virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue,
1805918060 const std::vector<FunctionParameter>& params,
1806018061 const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
18062+ virtual ValueLocation GetReturnValueLocation(BinaryView* view, const ReturnValue& returnValue) override;
18063+ virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view,
18064+ const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params,
18065+ const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override;
1806118066 virtual std::vector<Variable> GetParameterOrderingForVariables(
18062- const std::map<Variable, Ref<Type>>& params) override;
18063- virtual int64_t GetStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue,
18064- const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types) override;
18065- virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(
18067+ BinaryView* view, const std::map<Variable, Ref<Type>>& params) override;
18068+ virtual int64_t GetStackAdjustmentForLocations(BinaryView* view,
18069+ const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations,
18070+ const std::vector<Ref<Type>>& types) override;
18071+ virtual std::map<uint32_t, int32_t> GetRegisterStackAdjustments(BinaryView* view,
1806618072 const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& params) override;
1806718073 };
1806818074
0 commit comments