[all-commits] [llvm/llvm-project] c08f61: [lldb] Instantiate lazily named classes on macOS V...

Jonas Devlieghere via All-commits all-commits at lists.llvm.org
Tue Jun 21 18:51:53 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c08f61b45e3b93c25bc0405a489a382a54a5d941
      https://github.com/llvm/llvm-project/commit/c08f61b45e3b93c25bc0405a489a382a54a5d941
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2022-06-21 (Tue, 21 Jun 2022)

  Changed paths:
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp

  Log Message:
  -----------
  [lldb] Instantiate lazily named classes on macOS Ventura.

Recent revisions of the Objective-C runtime changed
objc_debug_class_getNameRaw() in a way that no longer triggers lazy
names to be instantiated. This has the unintended side-effect of making
generic bridged Swift classes, such as _SwiftDeferredNSDictionary<U,V>
to become invisible to the Objective-C runtime.

This patch detects this situation and forces the names to be
instantiated by calling class_getName() and discarding the result before
calling objc_debug_class_getNameRaw() again.

Many thanks to Mike Ash for outlining the solution and Adrian for
authoring the downstream patch.

rdar://95245318

Differential revision: https://reviews.llvm.org/D128306


  Commit: c866f8544c929578a49e0b222f2171da71c9f415
      https://github.com/llvm/llvm-project/commit/c866f8544c929578a49e0b222f2171da71c9f415
  Author: Jonas Devlieghere <jonas at devlieghere.com>
  Date:   2022-06-21 (Tue, 21 Jun 2022)

  Changed paths:
    M lldb/include/lldb/Target/Target.h
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
    M lldb/source/Target/Target.cpp
    M lldb/source/Target/TargetProperties.td

  Log Message:
  -----------
  [lldb] Add a setting to specify the preferred dynamic class info extractor o

Add a setting to configure how LLDB parses dynamic Objective-C class
metadata. By default LLDB will choose the most appropriate method for
the target OS.

Differential revision: https://reviews.llvm.org/D128312


Compare: https://github.com/llvm/llvm-project/compare/7a9ad257694c...c866f8544c92


More information about the All-commits mailing list