Jason Molenda dfcef35ff1
[lldb][NFC][MachO] Clean up LC_THREAD reading code, remove i386 corefile (#146480)
While fixing bugs in the x86_64 LC_THREAD parser in ObjectFileMachO, I
noticed that the other LC_THREAD parsers are all less clear than they
should be.

To recap, a Mach-O LC_THREAD load command has a byte size for the entire
payload. Within the payload, there will be one or more register sets
provided. A register set starts with a UInt32 "flavor", the type of
register set defined in the system headers, and a UInt32 "count", the
number of UInt32 words of memory for this register set. After one
register set, there may be additional sets. A parser can skip an unknown
register set flavor by using the count field to get to the next register
set. When the total byte size of the LC_THREAD load command has been
parsed, it is completed.

This patch fixes the riscv/arm/arm64 LC_THREAD parsers to use the total
byte size as the exit condition, and to skip past unrecognized register
sets, instead of stopping parsing.

Instead of fixing the i386 corefile support, I removed it. The last
macOS that supported 32-bit Intel code was macOS 10.14 in 2018. I also
removed i386 KDP support, 32-bit intel kernel debugging hasn't been
supported for even longer than that.

It would be preferable to do these things separately, but I couldn't
bring myself to update the i386 LC_THREAD parser, and it required very
few changes to remove this support entirely.
2025-07-02 10:21:38 -07:00

34 lines
909 B
CMake

lldb_tablegen(ProcessKDPProperties.inc -gen-lldb-property-defs
SOURCE ProcessKDPProperties.td
TARGET LLDBPluginProcessMacOSXKernelPropertiesGen)
lldb_tablegen(ProcessKDPPropertiesEnum.inc -gen-lldb-property-enum-defs
SOURCE ProcessKDPProperties.td
TARGET LLDBPluginProcessMacOSXKernelPropertiesEnumGen)
add_lldb_library(lldbPluginProcessMacOSXKernel PLUGIN
CommunicationKDP.cpp
ProcessKDP.cpp
ProcessKDPLog.cpp
RegisterContextKDP_arm.cpp
RegisterContextKDP_arm64.cpp
RegisterContextKDP_x86_64.cpp
ThreadKDP.cpp
LINK_LIBS
lldbBreakpoint
lldbCore
lldbHost
lldbInterpreter
lldbSymbol
lldbTarget
lldbUtility
lldbPluginDynamicLoaderDarwinKernel
lldbPluginDynamicLoaderStatic
lldbPluginProcessUtility
)
add_dependencies(lldbPluginProcessMacOSXKernel
LLDBPluginProcessMacOSXKernelPropertiesGen
LLDBPluginProcessMacOSXKernelPropertiesEnumGen)