summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h
AgeCommit message (Collapse)Author
2025-01-24[lldb][AArch64] Add Guarded Control Stack registers (#123720)David Spickett
The Guarded Control Stack extension implements a shadow stack and the Linux kernel provides access to 3 registers for it via ptrace. struct user_gcs { __u64 features_enabled; __u64 features_locked; __u64 gcspr_el0; }; This commit adds support for reading those from a live process. The first 2 are pseudo registers based on the real control register and the 3rd is a real register. This is the stack pointer for the guarded stack. I have added a "gcs_" prefix to the "features" registers so that they have a clear name when shown individually. Also this means they will tab complete from "gcs", and be next to gcspr_el0 in any sorted lists of registers. Guarded Control Stack Registers: gcs_features_enabled = 0x0000000000000000 gcs_features_locked = 0x0000000000000000 gcspr_el0 = 0x0000000000000000 Testing is more of the usual, where possible I'm writing a register then doing something in the program to confirm the value was actually sent to ptrace.
2024-09-25[lldb][AArch64][Linux] Add Floating Point Mode Register (#106695)David Spickett
Otherwise known as FEAT_FPMR. This register controls the behaviour of floating point operations. https://developer.arm.com/documentation/ddi0601/2024-06/AArch64-Registers/FPMR--Floating-point-Mode-Register As the current floating point register contexts are fixed size, this has been placed in a new set. Linux kernel patches have landed already, so you can cross check with those. To simplify testing we're not going to do any floating point operations, just read and write from the program and debugger to make sure each sees the other's values correctly.
2023-11-01[lldb][AArch64] Add SME2's ZT0 register (#70205)David Spickett
SME2 is documented as part of the main SME supplement: https://developer.arm.com/documentation/ddi0616/latest/ The one change for debug is this new ZT0 register. This register contains data to be used with new table lookup instructions. It's size is always 512 bits (not scalable) and can be interpreted in many different ways depending on the instructions that use it. The kernel has implemented this as a new register set containing this single register. It always returns register data (with no header, unlike ZA which does have a header). https://docs.kernel.org/arch/arm64/sme.html ZT0 is only active when ZA is active (when SVCR.ZA is 1). In the inactive state the kernel returns 0s for its contents. Therefore lldb doesn't need to create 0s like it does for ZA. However, we will skip restoring the value of ZT0 if we know that ZA is inactive. As writing to an inactive ZT0 sets SVCR.ZA to 1, which is not desireable as it would activate ZA also. Whether SVCR.ZA is set will be determined only by the ZA data we restore. Due to this, I've added a new save/restore kind SME2. This is easier than accounting for the variable length ZA in the SME data. We'll only save an SME2 data block if ZA is active. If it's not we can get fresh 0s back from the kernel for ZT0 anyway so there's nothing for us to restore. This new register will only show up if the system has SME2 therefore the SME set presented to the user may change, and I've had to account for that in in a few places. I've referred to it internally as simply "ZT" as the kernel does in NT_ARM_ZT, but the architecture refers to the specific register as "ZT0" so that's what you'll see in lldb. ``` (lldb) register read -s 6 Scalable Matrix Extension Registers: svcr = 0x0000000000000000 svg = 0x0000000000000004 za = {0x00 <...> 0x00} zt0 = {0x00 <...> 0x00} ```
2023-09-21[lldb][AArch64] Initialise m_sve_state in NativeRegisterContextLinuxDavid Spickett
I just fixed a bug in the core file equivalent where this was the issue. This class avoids the issue by setting m_sve_state early but should still be fixed so it doesn't crop up in a later refactor.
2023-09-20[lldb][AArch64] Add SME's streaming vector control registerDavid Spickett
Software can tell if it is in streaming SVE mode by checking the Streaming Vector Control Register (SVCR). "E3.1.9 SVCR, Streaming Vector Control Register" in "Arm® Architecture Reference Manual Supplement, The Scalable Matrix Extension (SME), for Armv9-A" https://developer.arm.com/documentation/ddi0616/latest/ This is especially useful for debug because the names of the SVE registers are the same betweeen non-streaming and streaming mode. The Linux Kernel chose to not put this register behind ptrace, and it can be read from EL0. However, this would mean running code in process to read it. That can be done but we already know all the information just from ptrace. So this is a pseudo register that matches the architectural content. The name is just "svcr", which aligns with GDB's proposed naming, and it's added to the existing SME register set. The SVCR register contains two bits: 0 : Whether streaming SVE mode is enabled (SM) 1 : Whether the array storage is enabled (ZA) Array storage can be active when streaming mode is not, so this register can have any permutation of those bits. This register is currently read only. We can emulate the result of writing to it, using ptrace. However at this point the utility of that is not obvious. Existing tests have been updated to check for appropriate SVCR values at various points. Given that this register is a read only pseudo, there is no need to save and restore it around expressions. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D154927
2023-09-19[lldb][AArch64] Add SME streaming vector length pseduo registerDavid Spickett
This adds a register "svg" which mirrors SVE's "vg" register. This reports the streaming vector length at all times, read from the ZA ptrace header. This register is needed first to implement ZA resizing as the streaming vector length changes. Like vg, svg will be expedited to the client so it can reconfigure its register definitions. The other use is for users to be able to know the streaming vector length without resorting to counting the (many, many) bytes in ZA, or temporarily entering streaming mode (which would be destructive). Some refactoring has been done so we don't have to recalculate the register offsets twice. Testing for this will come in a later patch. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D159503
2023-09-19[lldb][AArch64] Add SME's Array Storage (ZA) registerDavid Spickett
Note: This requires later commits for ZA to function properly, it is split for ease of review. Testing is also in a later patch. The "Matrix" part of the Scalable Matrix Extension is a new register "ZA". You can think of this as a square matrix made up of scalable rows, where each row is one scalable vector long. However it is not made of the existing scalable vector registers, it is its own register. Meaning that the size of ZA is the vector length in bytes * the vector length in bytes. https://developer.arm.com/documentation/ddi0616/latest/ It uses the streaming vector length, even when streaming mode itself is not active. For this reason, it's register data header always includes the streaming vector length. Due to it's size I've changed kMaxRegisterByteSize to the maximum possible ZA size and kTypicalRegisterByteSize will be the maximum possible scalable vector size. Therefore ZA transactions will cause heap allocations, and non ZA registers will perform exactly as before. ZA can be enabled and disabled independently of streaming mode. The way this works in ptrace is different to SVE versus streaming SVE. Writing NT_ARM_ZA without register data disables ZA, writing NT_ARM_ZA with register data enables ZA (LLDB will only support the latter, and only because it's convenient for us to do so). https://kernel.org/doc/html/v6.2/arm64/sme.html LLDB does not handle registers that can appear and dissappear at runtime. Rather than add complexity to implement that, LLDB will show a block of 0s when ZA is disabled. The alternative is not only updating the vector lengths every stop, but every register definition. It's possible but I'm not sure it's worth pursuing. Users should refer to the SVCR register (added in later patches) for the final word on whether ZA is active or not. Writing to "VG" during streaming mode will change the size of the streaming sve registers and ZA. LLDB will not attempt to preserve register values in this case, we'll just read back the undefined content the kernel shows. This is in line with, as stated, the kernel ABIs and the prospective software ABIs look like. ZA is defined as a vector of size SVL*SVL, so the display in lldb is very basic. A giant block of values. This is no worse than SVE, just larger. There is scope to improve this but that can wait until we see some use cases. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D159502
2023-09-11[lldb][AArch64] Add type marker to ReadAll/WriteALLRegisterValues dataDavid Spickett
While working in support for SME's ZA register, I found a circumstance where restoring ZA after SVE, when the current SVE mode is non-streaming, will kick the process back into FPSIMD mode. Meaning the SVE values that you just wrote are now cut off at 128 bit. The fix for that is to write ZA then SVE. Problem with that is, the current ReadAll/WriteAll makes a lot of assumptions about the saved data length. This patch changes the format so there is a "type" written before each data block. This tells WriteAllRegisterValues what it's looking at without brittle checks on length, or assumptions about ordering. If we want to change the order of restoration, all we now have to do is change the order of saving. This exposes a bug where the TLS registers are not restored. This will be fixed by https://reviews.llvm.org/D156512 in some form, depending on what lands first. Existing SVE tests certainly check restoration and when I got this wrong, many, many tests failed. So I think we have enough coverage already, and more will be coming with future ZA changes. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D156687
2023-07-26[lldb][AArch64] Add the tpidr2 TLS register that comes with SMEDavid Spickett
This changes the TLS regset to not only be dynamic in that it could exist or not (though it always does) but also of a dynamic size. If SME is present then the regset is 16 bytes and contains both tpidr and tpidr2. Testing is the same as tpidr. Write from assembly, read from lldb and vice versa since we have no way to predict what its value should be by just running a program. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D154930
2023-07-26[lldb][AArch64] Add support for SME's SVE streaming mode registersDavid Spickett
The Scalable Matrix Extension (SME) adds a new Scalable Vector mode called "streaming SVE mode". In this mode a lot of things change, but my understanding overall is that this mode assumes you are not going to move data out of the vector unit very often or read flags. Based on "E1.3" of "Arm® Architecture Reference Manual Supplement, The Scalable Matrix Extension (SME), for Armv9-A". https://developer.arm.com/documentation/ddi0616/latest/ The important details for debug are that this adds another set of SVE registers. This set is only active when we are in streaming mode and is read from a new ptrace regset NT_ARM_SSVE. We are able to read the header of either mode at all times but only one will be active and contain register data. For this reason, I have reused the existing SVE state. Streaming mode is just another mode value attached to that state. The streaming mode registers do not have different names in the architecture, so I do not plan to allow users to read or write the inactive mode's registers. "z0" will always mean "z0" of the active mode. Ptrace does allow reading inactive modes, but the data is of little use. Writing to inactive modes will switch to that mode which would not be what a debugger user would expect. So lldb will do neither. Existing SVE tests have been updated to check streaming mode and mode switches. However, we are limited in what we can check given that state for the other mode is invalidated on mode switch. The only way to know what mode you are in for testing purposes would be to execute a streaming only, or non-streaming only instruction in the opposite mode. However, the CPU feature smefa64 actually allows all non-streaming mode instructions in streaming mode. This is enabled by default in QEMU emulation and rather than mess about trying to disable it I'm just going to use the pseduo streaming control register added in a later patch to make these tests more robust. A new test has been added to check SIMD read/write from all the modes as there is a subtlety there that needs noting, though lldb doesn't have to make extra effort to do so. If you are in streaming mode and write to v0, when you later exit streaming mode that value may not be in the non-streaming state. This can depend on how the core works but is a valid behaviour. For example, say I am stopped here: mov x0, v0.d[0] And I want to update v0 in lldb. "register write v0 ..." should update the v0 that this instruction is about to see. Not the potential other copy of v0 in the non-streaming state (which is what I attempted in earlier versions of this patch). Not to mention, switching out of streaming mode here would be unexpected and difficult to signal to the user. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D154926
2023-06-19[lldb][AArch64] Add thread local storage tpidr registerDavid Spickett
This register is used as the pointer to the current thread local storage block and is read from NT_ARM_TLS on Linux. Though tpidr will be present on all AArch64 Linux, I am soon going to add a second register tpidr2 to this set. tpidr is only present when SME is implemented, therefore the NT_ARM_TLS set will change size. This is why I've added this as a dynamic register set to save changes later. Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D152516
2022-04-05[lldb] Update the NativeRegisterContext to take a WritableMemoryBufferJonas Devlieghere
2021-09-09AArch64 SVE restore SVE registers after expressionMuhammad Omair Javaid
This patch fixes register save/restore on expression call to also include SVE registers. This will fix expression calls like: re re p1 <Register Value P1 before expression> p <var-name or function call> re re p1 <Register Value P1 after expression> In above example register P1 should remain the same before and after the expression evaluation. Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D108739
2021-07-12Support AArch64/Linux watchpoint on tagged addressesMuhammad Omair Javaid
AArch64 architecture support virtual addresses with some of the top bits ignored. These ignored bits can host memory tags or bit masks that can serve to check for authentication of address integrity. We need to clear away the top ignored bits from watchpoint address to reliably hit and set watchpoints on addresses containing tags or masks in their top bits. This patch adds support to watch tagged addresses on AArch64/Linux. Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D101361
2021-06-30[lldb] Replace SVE_PT* macros in NativeRegisterContextLinux_arm64.{cpp,h} ↵Caroline Tice
with their equivalent defintions in LinuxPTraceDefines_arm64sve.h Commit 090306fc80dbf (August 2020) changed most of the arm64 SVE_PT* macros, but apparently did not make the changes in the NativeRegisterContextLinux_arm64.* files (or those files were pulled over from someplace else after that commit). This change replaces the macros NativeRegisterContextLinux_arm64.cpp with the replacement definitions in LinuxPTraceDefines_arm64sve.h. It also includes LinuxPTraceDefines_arm64sve.h in NativeRegisterContextLinux_arm64.h. Differential Revision: https://reviews.llvm.org/D104826
2021-06-24[lldb][AArch64] Add memory tag reading to lldb-serverDavid Spickett
This adds memory tag reading using the new "qMemTags" packet and ptrace on AArch64 Linux. This new packet is following the one used by GDB. (https://sourceware.org/gdb/current/onlinedocs/gdb/General-Query-Packets.html) On AArch64 Linux we use ptrace's PEEKMTETAGS to read tags and we assume that lldb has already checked that the memory region actually has tagging enabled. We do not assume that lldb has expanded the requested range to granules and expand it again to be sure. (although lldb will be sending aligned ranges because it happens to need them client side anyway) Also we don't assume untagged addresses. So for AArch64 we'll remove the top byte before using them. (the top byte includes MTE and other non address data) To do the ptrace read NativeProcessLinux will ask the native register context for a memory tag manager based on the type in the packet. This also gives you the ptrace numbers you need. (it's called a register context but it also has non register data, so it saves adding another per platform sub class) The only supported platform for this is AArch64 Linux and the only supported tag type is MTE allocation tags. Anything else will error. Ptrace can return a partial result but for lldb-server we will be treating that as an error. To succeed we need to get all the tags we expect. (Note that the protocol leaves room for logical tags to be read via qMemTags but this is not going to be implemented for lldb at this time.) Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D95601
2021-04-01Revert "Revert "[LLDB] Arm64/Linux Add MTE and Pointer Authentication ↵Muhammad Omair Javaid
registers"" This reverts commit 71b648f7158c7a0b4918eaa3e94d307e4bbfce97. There was a typo in the last commit which was causing LLDB AArch64 Linux buildbot testsuite failures. Now fixed in current version.
2021-03-31Revert "[LLDB] Arm64/Linux Add MTE and Pointer Authentication registers"Muhammad Omair Javaid
This reverts commit 1164b4e2957290e814c3dd781a68e504dd39148e. Reason: LLDB AArch64 Linux buildbot failure
2021-03-31[LLDB] Arm64/Linux Add MTE and Pointer Authentication registersMuhammad Omair Javaid
This patch adds two new dynamic register sets for AArch64 MTE and Pointer Authentication features. These register sets are dynamic and will only be available if underlying hardware support either of these features. LLDB will pull in Aux vector information and create register infos based on that information. A follow up patch will add a test case to test these feature registers. Reviewed By: labath, DavidSpickett Differential Revision: https://reviews.llvm.org/D96460
2021-03-31[LLDB] Add support for Arm64/Linux dynamic register setsMuhammad Omair Javaid
This is patch adds support for adding dynamic register sets for AArch64 dynamic features in LLDB. AArch64 has optional features like SVE, Pointer Authentication and MTE which means LLDB needs to decide at run time which registers it needs to pull in for the current executable based on underlying support for a certain feature. This patch makes necessary adjustments to make way for dynamic register infos and dynamic register sets. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D96458
2021-03-10[lldb] [Process/FreeBSD] Introduce aarch64 hw break/watchpoint supportMichał Górny
Split out the common base of Linux hardware breakpoint/watchpoint support for AArch64 into a Utility class, and use it to implement the matching support on FreeBSD. Differential Revision: https://reviews.llvm.org/D96548
2020-12-02Make offset field optional in RegisterInfo packet for Arm64Muhammad Omair Javaid
This patch carries forward our aim to remove offset field from qRegisterInfo packets and XML register description. I have created a new function which returns if offset fields are dynamic meaning client can calculate offset on its own based on register number sequence and register size. For now this function only returns true for NativeRegisterContextLinux_arm64 but we can test this for other architectures and make it standard later. As a consequence we do not send offset field from lldb-server (arm64 for now) while other stubs dont have an offset field so it wont effect them for now. On the client side we have replaced previous offset calculation algorithm with a new scheme, where we sort all primary registers in increasing order of remote regnum and then calculate offset incrementally. This committ also includes a test to verify all of above functionality on Arm64. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D91241
2020-12-02RegisterInfoPOSIX_arm64 remove unused bytes from g/G packetMuhammad Omair Javaid
This came up while putting together our new strategy to create g/G packets in compliance with GDB RSP protocol where register offsets are calculated in increasing order of register numbers without any unused spacing. RegisterInfoPOSIX_arm64::GPR size was being calculated after alignment correction to 8 bytes which meant there was a 4 bytes unused space between last gpr (cpsr) and first vector register V. We have put LLVM_PACKED_START decorator on RegisterInfoPOSIX_arm64::GPR to make sure single byte alignment is enforced. Moreover we are now doing to use arm64 user_pt_regs struct defined in ptrace.h for accessing ptrace user registers. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D92063
2020-11-30Send SVE vg register in custom expedited registersetMuhammad Omair Javaid
This patch ovverides GetExpeditedRegisterSet for NativeRegisterContextLinux_arm64 to send vector granule register in expedited register set if SVE mode is selected. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D82855
2020-08-19[LLDB] Add ptrace register access for AArch64 SVE registersMuhammad Omair Javaid
This patch adds NativeRegisterContext_arm64 ptrace routines to access AArch64 SVE register set. This patch also adds a test-case to test AArch64 SVE register access and dynamic size configuration capability. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D79699
2020-07-07Combine multiple defs of arm64 register setsMuhammad Omair Javaid
Summary: This patch aims to combine similar arm64 register set definitions defined in NativeRegisterContextLinux_arm64 and RegisterContextPOSIX_arm64. I have implemented a register set interface out of RegisterInfoInterface class and moved arm64 register sets into RegisterInfosPOSIX_arm64 which is similar to Utility/RegisterContextLinux_* implemented by various other targets. This will help in managing register sets of new ARM64 architecture features in one place. Built and tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabihf targets. Reviewers: labath Reviewed By: labath Subscribers: mhorne, emaste, kristof.beyls, atanasyan, danielkiss, lldb-commits Differential Revision: https://reviews.llvm.org/D80105
2019-12-06Cleanup and speedup NativeRegisterContextLinux_arm64Muhammad Omair Javaid
Summary: This patch simplifies register accesses in NativeRegisterContextLinux_arm64 and also adds some bare minimum caching to avoid multiple calls to ptrace during a stop. Linux ptrace returns data in the form of structures containing GPR/FPR data. This means that one single call is enough to read all GPRs or FPRs. We do that once per stop and keep reading from or writing to the buffer that we have in NativeRegisterContextLinux_arm64 class. Before a resume or detach we write all buffers back. This is tested on aarch64 thunder x1 with Ubuntu 18.04. Also tested regressions on x86_64. Reviewers: labath, clayborg Reviewed By: labath Subscribers: kristof.beyls, lldb-commits Differential Revision: https://reviews.llvm.org/D69371
2019-09-02NativeProcessLinux: Remove some register context boilerplatePavel Labath
Summary: This patch follows the spirit of D63594, and removes some null checks for things which should be operating invariants. Specifically {Read,Write}[GF]PR now no longer check whether the supplied buffers are null, because they never are. After this, the Do*** versions of these function no longer serve any purpose and are inlined into their callers. Other cleanups are possible here too, but I am taking this one step at a time because this involves a lot of architecture-specific code, which I don't have the hardware to test on (I did do a build-test though). Reviewers: mgorny, jankratochvil, omjavaid, alexandreyy, uweigand Subscribers: nemanjai, javed.absar, kbarton, lldb-commits Differential Revision: https://reviews.llvm.org/D66744 llvm-svn: 370653
2019-04-10[NFC] Remove ASCII lines from commentsJonas Devlieghere
A lot of comments in LLDB are surrounded by an ASCII line to delimit the begging and end of the comment. Its use is not really consistent across the code base, sometimes the lines are longer, sometimes they are shorter and sometimes they are omitted. Furthermore, it looks kind of weird with the 80 column limit, where the comment actually extends past the line, but not by much. Furthermore, when /// is used for Doxygen comments, it looks particularly odd. And when // is used, it incorrectly gives the impression that it's actually a Doxygen comment. I assume these lines were added to improve distinguishing between comments and code. However, given that todays editors and IDEs do a great job at highlighting comments, I think it's worth to drop this for the sake of consistency. The alternative is fixing all the inconsistencies, which would create a lot more churn. Differential revision: https://reviews.llvm.org/D60508 llvm-svn: 358135
2019-01-19Update the file headers across all of the LLVM projects in the monorepoChandler Carruth
to reflect the new license. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351636
2018-05-29Typo fixes.Bruce Mitchener
Reviewers: javed.absar Subscribers: ki.stfu, JDevlieghere, lldb-commits Differential Revision: https://reviews.llvm.org/D47421 llvm-svn: 333399
2017-11-10Clean up NativeRegisterContextPavel Labath
Summary: This commit removes the concrete_frame_idx member from NativeRegisterContext and related functions, which was always set to zero and never used. I also change the native thread class to store a NativeRegisterContext as a unique_ptr (documenting the ownership) and make sure it is always initialized (most of the code was already blindly dereferencing the register context pointer, assuming it would always be present -- this makes its treatment consistent). Reviewers: eugene, clayborg, krytarowski Subscribers: aemerson, sdardis, nemanjai, javed.absar, arichardson, kristof.beyls, kbarton, uweigand, alexandreyy, lldb-commits Differential Revision: https://reviews.llvm.org/D39837 llvm-svn: 317881
2017-05-12Rename Error -> Status.Zachary Turner
This renames the LLDB error class to Status, as discussed on the lldb-dev mailing list. A change of this magnitude cannot easily be done without find and replace, but that has potential to catch unwanted occurrences of common strings such as "Error". Every effort was made to find all the obvious things such as the word "Error" appearing in a string, etc, but it's possible there are still some lingering occurences left around. Hopefully nothing too serious. llvm-svn: 302872
2017-02-24Hardware breakpoints for Linux on Arm/AArch64 targetsOmair Javaid
Please look at below differential link for upstream discussion. Differential revision: https://reviews.llvm.org/D29669 llvm-svn: 296119
2016-09-06*** This commit represents a complete reformatting of the LLDB source codeKate Stone
*** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
2016-06-16Allow installing watchpoints at less than 8-byte alligned addresses for ↵Omair Javaid
AArch64 targets This patch allows LLDB for AArch64 to watch all bytes, words or double words individually on non 8-byte alligned addresses. This patch also adds tests to verify this functionality. Differential revision: http://reviews.llvm.org/D21280 llvm-svn: 272916
2015-09-07Fix the handling of FPR offsets in Linux arm/aarch64 register contextsTamas Berghammer
Differential revision: http://reviews.llvm.org/D12636 llvm-svn: 246959
2015-08-12Fix AArch64 watchpoint handlers in NativeRegisterContextLinux_arm64Omair Javaid
http://reviews.llvm.org/D11899 llvm-svn: 244750
2015-07-03Fix 128bit register read and user register count on aarch64Tamas Berghammer
llvm-svn: 241340
2015-06-26[NativeProcessLinux] Use lambdas in DoOperation callsPavel Labath
Summary: This removes a lot of boilerplate, which was needed to execute monitor operations. Previously one needed do declare a separate class for each operation which would manually capture all needed arguments, which was very verbose. In addition to less code, I believe this also makes the code more readable, since now the implementation of the operation can be physically closer to the code that invokes it. Test Plan: Code compiles on x86, arm and mips, tests pass on x86 linux. Reviewers: tberghammer, chaoren Subscribers: aemerson, lldb-commits Differential Revision: http://reviews.llvm.org/D10694 llvm-svn: 240772
2015-05-26Move register reading form NativeProcessLinux to NativeRegisterContextLinux*Tamas Berghammer
This change reorganize the register read/write code inside lldb-server on Linux with moving the architecture independent code into a new class called NativeRegisterContextLinux and all of the architecture dependent code into the appropriate NativeRegisterContextLinux_* class. As part of it the compilation of the architecture specific register contexts are only compiled on the specific architecture because they can't be used in other cases. The purpose of this change is to remove a lot of duplicated code from the different register contexts and to remove the architecture dependent codes from the global NativeProcessLinux class. Differential revision: http://reviews.llvm.org/D9935 llvm-svn: 238196
2015-05-15This patch adds support for setting/clearing hardware watchpoints and ↵Omair Javaid
breakpoints on AArch64 (Arm v8) 64-bit hardware. http://reviews.llvm.org/D9706 llvm-svn: 237419
2015-03-31Move several plugin to its own namespaceTamas Berghammer
Affected paths: * Plugins/Platform/Android/* * Plugins/Platform/Linux/* * Plugins/Platform/gdb-server/* * Plugins/Process/Linux/* * Plugins/Process/gdb-remote/* Differential revision: http://reviews.llvm.org/D8654 llvm-svn: 233679
2015-03-13Create NativeRegisterContext for android-arm64Tamas Berghammer
Differential revision: http://reviews.llvm.org/D8058 llvm-svn: 232160