sgraenitz added a comment.

In D146154#4203277 <https://reviews.llvm.org/D146154#4203277>, @aprantl wrote:

> Here is an example of how the Swift Runtime plugin detects both itself and 
> whether ObjC interop is enabled. Basically all I'm asking is to not 
> accidentally break this mechanism.

Thanks for the link! I think Swift is doing the exact right thing here: it 
requests the Apple ObjC V2 runtime explicitly in 
https://github.com/apple/llvm-project/blob/fcf8f57c74defcc0c422331cb90a3b9dd8d7b476/lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntime.cpp#L102-L106

Anyway, I updated my patch to do the symbol lookup, because the pure presence 
of an ObjC runtime makes for some interesting regressions in the test suite. 
E.g. here we enable ObjC in C++ code 
<https://github.com/llvm/llvm-project/blob/release/16.x/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp#L554-L555>
 if the runtime exists:

  lang_opts.ObjC =
      process_sp->GetLanguageRuntime(lldb::eLanguageTypeObjC) != nullptr;



================
Comment at: 
lldb/source/Plugins/LanguageRuntime/ObjC/GNUstepObjCRuntime/GNUstepObjCRuntime.cpp:62
+    images.FindSymbolsWithNameAndType(ConstString("__objc_load"),
+                                      eSymbolTypeCode, objc_mandatory);
+    if (objc_mandatory.GetSize() == 0)
----------------
There is no EH personality on Windows so I am checking for a core ObjC runtime 
symbol. Hope that's ok?
I put a list with all DLL symbols here: 
https://gist.github.com/weliveindetail/0c57135741b314d2952236bcffae0ab1


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146154/new/

https://reviews.llvm.org/D146154

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to