From 8ef932b35e76f670611b79a2fcba88c6f8e15169 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Thu, 8 May 2025 10:34:13 -0700 Subject: [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 a57f2c73..014d8057 100644 --- a/objectivec/objc.cpp +++ b/objectivec/objc.cpp @@ -955,6 +955,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); @@ -967,6 +968,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 (...) { -- cgit v1.3.1