Don't load non-kexts in darwin kernel debug; handle unslid segs
authorJason Molenda <jason@molenda.com>
Thu, 9 Mar 2023 00:49:28 +0000 (16:49 -0800)
committerJason Molenda <jason@molenda.com>
Thu, 9 Mar 2023 00:51:27 +0000 (16:51 -0800)
commit794d2089cd741135b60e94ac2495174a03b38143
treee1ee819360cfdeda9e4c69c6089c6403f3622cba
parent5412ed44b5887563a17203d5ed5796dbffce3577
Don't load non-kexts in darwin kernel debug; handle unslid segs

We have some non-kexts in the binary list in the Darwin kernel
in some situations.  The binary has likely already been loaded;
check if it has been, and don't re-load it.  Also, if we do need
to load it at this point, if in-memory segment vmaddrs have not
been updated to the actual load addresses, calculate a fixed slide
for the in-memory image and apply that slide to the ondisk binary.

Differential Revision: https://reviews.llvm.org/D145547
rdar://106343477
lldb/source/Plugins/DynamicLoader/Darwin-Kernel/CMakeLists.txt
lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h