[all-commits] [llvm/llvm-project] 8d5dea: [lldb][ARM] Port Arm Linux to use NativeRegisterCo...
David Spickett via All-commits
all-commits at lists.llvm.org
Wed Aug 27 06:06:00 PDT 2025
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 8d5deadb15d7c2c9b6ad6f802ffca161639fca54
https://github.com/llvm/llvm-project/commit/8d5deadb15d7c2c9b6ad6f802ffca161639fca54
Author: David Spickett <david.spickett at linaro.org>
Date: 2025-08-27 (Wed, 27 Aug 2025)
Changed paths:
M lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.cpp
M lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm.h
M lldb/source/Plugins/Process/Utility/CMakeLists.txt
M lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg.cpp
M lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg.h
A lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_arm.cpp
A lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_arm.h
Log Message:
-----------
[lldb][ARM] Port Arm Linux to use NativeRegisterContextDBReg (#152284)
Which is also used by AArch64 and LoongArch.
To test this, I ran the test suite as usual on Arm and found no new
failures, then ran it again with all test programs compiled with
`-mthumb`. This means the binaries will be entirely Thumb code.
Finally I tested it on AArch64, but this is mostly a build test,
as I did not run the entire test suite compiled to AArch32.
Prior to this change, these tests failed with `-mthumb`:
```
Failed Tests (14):
lldb-api :: commands/process/reverse-continue/TestReverseContinue.py
lldb-api :: functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py
lldb-api :: functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
lldb-api :: functionalities/reverse-execution/TestReverseContinueBreakpoints.py
lldb-api :: functionalities/reverse-execution/TestReverseContinueWatchpoints.py
lldb-api :: functionalities/tail_call_frames/disambiguate_call_site/TestDisambiguateCallSite.py
lldb-api :: functionalities/tail_call_frames/disambiguate_paths_to_common_sink/TestDisambiguatePathsToCommonSink.py
lldb-api :: functionalities/tail_call_frames/disambiguate_tail_call_seq/TestDisambiguateTailCallSeq.py
lldb-api :: functionalities/tail_call_frames/inlining_and_tail_calls/TestInliningAndTailCalls.py
lldb-api :: functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py
lldb-api :: functionalities/tail_call_frames/thread_step_out_message/TestArtificialFrameStepOutMessage.py
lldb-api :: functionalities/thread/jump/TestThreadJump.py
lldb-api :: lang/c/vla/TestVLA.py
lldb-api :: linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
```
After this change, no new failures occurred. So I am confident it is
correct / as bad as it always was.
Looking at those failures, it's a few things:
* Something in the reverse execution wrapper that I can't figure out,
but is
likely nothing to do with the real breakpoints.
* The inability to tail call when building thumb code, because the call
goes
via. a veneer that might do a mode switch.
* Assumptions about source locations being in specific places.
None of which are issues I feel like need fixing before doing this port.
I suspect there is redundant code in this, particularly aligning
addresses. I've not made an effort to remove it because A: I'm scared to
break Thumb support because it's not commonly used and B: it may be
there to handle clients other than LLDB, which don't align breakpoint
addresses before requesting them.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list