summaryrefslogtreecommitdiff
path: root/lang/c/pseudoobjc.h
diff options
context:
space:
mode:
authorMark Rowe <mrowe@bdash.net.nz>2025-05-08 11:31:10 -0700
committerkat <kat@vector35.com>2025-05-29 09:42:11 -0400
commit2524e2ce6be351d79477442a073e743946d1334a (patch)
tree79486df727a1cd6741237d96de3e0056f4cd4f1e /lang/c/pseudoobjc.h
parent4ea37e18bfed8de162dfb816971417a0679b602f (diff)
Detect calls that the Objective-C workflow has rewritten directly to an implementation
These are detected by their function names having the characteristic `-[ClassName methodName:]` format. Calls to functions with this naming pattern that accept a selector as a second argument are assumed to be `objc_msgSend` calls that the Objective-C workflow rewrote. These calls are formatted identically to other `objc_msgSend` calls with the exception that the selector tokens reference the address of the call target rather than the selector string, so double-clicking on them takes you to the fixed destination of the rewritten call.
Diffstat (limited to 'lang/c/pseudoobjc.h')
-rw-r--r--lang/c/pseudoobjc.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/lang/c/pseudoobjc.h b/lang/c/pseudoobjc.h
index 4b87c7d7..9910c4b8 100644
--- a/lang/c/pseudoobjc.h
+++ b/lang/c/pseudoobjc.h
@@ -22,7 +22,7 @@ protected:
BNOperatorPrecedence precedence, bool statement) override;
private:
- bool GetExpr_ObjCMsgSend(const BinaryNinja::HighLevelILInstruction& expr,
+ bool GetExpr_ObjCMsgSend(uint64_t msgSendAddress, bool isRewritten, const BinaryNinja::HighLevelILInstruction& expr,
BinaryNinja::HighLevelILTokenEmitter& tokens, BinaryNinja::DisassemblySettings* settings,
const std::vector<BinaryNinja::HighLevelILInstruction>& parameterExprs);
bool GetExpr_GenericObjCRuntimeCall(uint64_t address, const BinaryNinja::HighLevelILInstruction& expr,