[all-commits] [llvm/llvm-project] 29c7e6: Clang added a new feature to the ObjC compiler tha...

jimingham via All-commits all-commits at lists.llvm.org
Thu Jan 23 12:41:54 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 29c7e6c8c97f6b1186f012d614e9a1100e8c06cb
      https://github.com/llvm/llvm-project/commit/29c7e6c8c97f6b1186f012d614e9a1100e8c06cb
  Author: Jim Ingham <jingham at apple.com>
  Date:   2020-01-23 (Thu, 23 Jan 2020)

  Changed paths:
    M lldb/include/lldb/Target/ThreadPlan.h
    M lldb/include/lldb/Target/ThreadPlanStepInRange.h
    A lldb/packages/Python/lldbsuite/test/lang/objc/direct-dispatch-step/Makefile
    A lldb/packages/Python/lldbsuite/test/lang/objc/direct-dispatch-step/TestObjCDirectDispatchStepping.py
    A lldb/packages/Python/lldbsuite/test/lang/objc/direct-dispatch-step/stepping-tests.m
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
    M lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h

  Log Message:
  -----------
  Clang added a new feature to the ObjC compiler that will translate method
calls to commonly un-overridden methods into a function that checks whether
the method is overridden anywhere and if not directly dispatches to the
NSObject implementation.

That means if you do override any of these methods, "step-in" will not step
into your code, since we hit the wrapper function, which has no debug info,
and immediately step out again.

Add code to recognize these functions as "trampolines" and a thread plan that
will get us from the function to the user code, if overridden.

<rdar://problem/54404114>

Differential Revision: https://reviews.llvm.org/D73225




More information about the All-commits mailing list