jGetLoadedDynamicLibrariesInfos can inspect machos not yet loaded
authorJason Molenda <jason@molenda.com>
Thu, 14 Jul 2022 07:53:08 +0000 (00:53 -0700)
committerJason Molenda <jason@molenda.com>
Thu, 14 Jul 2022 07:56:14 +0000 (00:56 -0700)
commitac49e9021919d2a356dd10b39888f168736a43b0
tree80049d71a87316bf6e9dbd407b3bfa4f0d7442fb
parentc66303c2870c9a77a0f2a8aa16fd0ea87b0358e6
jGetLoadedDynamicLibrariesInfos can inspect machos not yet loaded

jGetLoadedDynamicLibrariesInfos normally checks with dyld to find
the list of binaries loaded in the inferior, and getting the filepath,
before trying to parse the Mach-O binary in inferior memory.
This allows for debugserver to parse a Mach-O binary present in memory,
but not yet registered with dyld.  This patch also adds some simple
sanity checks that we're reading a Mach-O header before we begin
stepping through load commands, because we won't have the sanity check
of consulting dyld for the list of loaded binaries before parsing.
Also adds a testcase.

[This patch was reverted after causing a testsuite failure on a CI bot;
I haven't been able to repro the failure outside the CI, but I have a
theory that my sanity check on cputype which only matched arm64 and
x86_64 - and the CI machine may have a watch simulator that is still
using i386.]

Differential Revision: https://reviews.llvm.org/D128956
rdar://95737734
lldb/test/API/macosx/unregistered-macho/Makefile [new file with mode: 0644]
lldb/test/API/macosx/unregistered-macho/TestUnregisteredMacho.py [new file with mode: 0644]
lldb/test/API/macosx/unregistered-macho/main.c [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachProcess.h
lldb/tools/debugserver/source/MacOSX/MachProcess.mm