dyld has two notification functions - a native one, and one that it rewrites its arguments for, for lldb. We currently use the latter, _dyld_debugger_notification. The native notification function, lldb_image_notifier (and on older systems, gdb_image_notifier) we can find by name, or if libdyld shows no dyld loaded in the process currently, we can get it from the dyld_all_image_infos object in memory which we can find with a system call. When we do a "waitfor attach" to a process on a modern darwin system, there is a transition early in launch from the launch dyld to the shared-cache-dyld, and when we attach in the middle of that transition, libdyld will say there is no dyld present. But we can still find the in-memory dyld_all_image_infos which has the address of the shared cache notifier function that will be registered in the process soon. This change will result in a much more reliable waitfor-attach. This is the third landing of this patch. We have an Intel mac CI bot that is running an older (c. 2019) macOS 10.15, I had to reproduce that environment and found the name of the notifier function had changed which was the cause of those failures. Differential Revision: https://reviews.llvm.org/D139453 rdar://101194149
28 KiB
28 KiB