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.
34 lines
909 B
CMake
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)
|