feat(profile): add macros for properly defining the interfaces of vtables

This commit is contained in:
phaneron 2026-04-30 01:32:19 -04:00
parent 8f4b08b0e6
commit 4b438d3528
2 changed files with 23 additions and 4 deletions

View file

@ -28,4 +28,23 @@
#define DECLARE_UNION(T) typedef union T T
#if defined(IDA) || defined(CLANGD)
// void Method(int32_t a1);
#define P_METHOD(__result__, name, ...) __result__(__thiscall* name)(INTERFACE * this, __VA_ARGS__)
// void Method();
#define E_METHOD(__result__, name) __result__(__thiscall* name)(INTERFACE * this)
#else
// ghidra doesn't support calling conventions in function pointer types :(
// this hides autoanalysis for the 'this' pointer but at least has correct
// parameter types
#define P_METHOD(__result__, name, ...) __result__ (*name)(__VA_ARGS__)
#define E_METHOD(__result__, name) __result__ (*name)()
#endif
#endif