diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2026-01-23 18:36:13 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2026-05-22 16:30:57 -0400 |
| commit | 217b4a3361cbf62020658f12efb47b8fabb6a24d (patch) | |
| tree | 59d677957d85851dcd3d380f7e3350b709e08628 /binaryninjaapi.h | |
| parent | a4a3de2ad363b1bceb28f106e2cc6d811b3370b5 (diff) | |
Initial support for Go and Pascal calling conventions
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 1029d33b..70c6552f 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -17991,6 +17991,7 @@ namespace BinaryNinja { static bool IsArgumentTypeRegisterCompatibleCallback(void* ctxt, BNBinaryView* view, BNType* type); static bool IsNonRegisterArgumentIndirectCallback(void* ctxt, BNBinaryView* view, BNType* type); static bool AreStackArgumentsNaturallyAlignedCallback(void* ctxt); + static bool AreStackArgumentsPushedLeftToRightCallback(void* ctxt); static void GetCallLayoutCallback(void* ctxt, BNBinaryView* view, BNReturnValue* returnValue, BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs, @@ -18003,6 +18004,9 @@ namespace BinaryNinja { BNValueLocation* returnValue, BNFunctionParameter* params, size_t paramCount, bool hasPermittedRegs, uint32_t* permittedRegs, size_t permittedRegCount, size_t* outLocationCount); static void FreeParameterLocationsCallback(void* ctxt, BNValueLocation* locations, size_t count); + static BNVariable* GetParameterOrderingForVariablesCallback( + void* ctxt, BNBinaryView* view, BNVariable* vars, BNType** types, size_t paramCount, size_t* outCount); + static void FreeVariableListCallback(void* ctxt, BNVariable* vars, size_t count); static int64_t GetStackAdjustmentForLocationsCallback(void* ctxt, BNBinaryView* view, BNValueLocation* returnValue, BNValueLocation* locations, BNType** types, size_t paramCount); static size_t GetRegisterStackAdjustmentsCallback(void* ctxt, BNBinaryView* view, BNValueLocation* returnValue, @@ -18061,6 +18065,7 @@ namespace BinaryNinja { bool DefaultIsArgumentTypeRegisterCompatible(Type* type); virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type); virtual bool AreStackArgumentsNaturallyAligned(); + virtual bool AreStackArgumentsPushedLeftToRight(); virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue, const std::vector<FunctionParameter>& params, @@ -18069,6 +18074,8 @@ namespace BinaryNinja { virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view, const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params, const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt); + virtual std::vector<Variable> GetParameterOrderingForVariables( + BinaryView* view, const std::map<Variable, Ref<Type>>& params); virtual int64_t GetStackAdjustmentForLocations(BinaryView* view, const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types); @@ -18082,6 +18089,7 @@ namespace BinaryNinja { std::vector<ValueLocation> GetDefaultParameterLocations(BinaryView* view, const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params, const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt); + std::vector<Variable> GetDefaultParameterOrderingForVariables(const std::map<Variable, Ref<Type>>& params); int64_t GetDefaultStackAdjustmentForLocations(const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types); std::map<uint32_t, int32_t> GetDefaultRegisterStackAdjustments( @@ -18128,6 +18136,7 @@ namespace BinaryNinja { virtual bool IsArgumentTypeRegisterCompatible(BinaryView* view, Type* type) override; virtual bool IsNonRegisterArgumentIndirect(BinaryView* view, Type* type) override; virtual bool AreStackArgumentsNaturallyAligned() override; + virtual bool AreStackArgumentsPushedLeftToRight() override; virtual CallLayout GetCallLayout(BinaryView* view, const ReturnValue& returnValue, const std::vector<FunctionParameter>& params, @@ -18136,6 +18145,8 @@ namespace BinaryNinja { virtual std::vector<ValueLocation> GetParameterLocations(BinaryView* view, const std::optional<ValueLocation>& returnValue, const std::vector<FunctionParameter>& params, const std::optional<std::set<uint32_t>>& permittedRegs = std::nullopt) override; + virtual std::vector<Variable> GetParameterOrderingForVariables( + BinaryView* view, const std::map<Variable, Ref<Type>>& params) override; virtual int64_t GetStackAdjustmentForLocations(BinaryView* view, const std::optional<ValueLocation>& returnValue, const std::vector<ValueLocation>& locations, const std::vector<Ref<Type>>& types) override; |
