From 810f1f60d395b34d7bd46f5ff00f5027067ac8f7 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Thu, 8 May 2025 10:34:13 -0700 Subject: [PATCH] [ObjC] Add an explicit reference to a method impl from its selector This makes it easier to see the possible message send targets when looking at a call to `objc_msgSend`. --- objectivec/objc.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/objectivec/objc.cpp b/objectivec/objc.cpp index 84abd1428..2426bfdae 100644 --- a/objectivec/objc.cpp +++ b/objectivec/objc.cpp @@ -892,6 +892,7 @@ void ObjCProcessor::ReadMethodList(ObjCReader* reader, ClassBase& cls, std::stri DefineObjCSymbol(DataSymbol, Type::PointerType(m_data->GetAddressSize(), selType), "selRef_" + method.name, meth.name, true); } + // workflow objc support if (selAddr) m_selToImplementations[selAddr].push_back(meth.imp); @@ -904,6 +905,11 @@ void ObjCProcessor::ReadMethodList(ObjCReader* reader, ClassBase& cls, std::stri method.imp = meth.imp; cls.methodList[cursor] = method; m_localMethods[cursor] = method; + + if (selAddr) + m_data->AddUserDataReference(selAddr, meth.imp); + if (selRefAddr) + m_data->AddUserDataReference(selRefAddr, meth.imp); } catch (...) {