llvm with tablegen backend for capstone disassembler
Go to file
David Spickett 54981bb75d [lldb] Read register fields from target XML
This teaches ProcessGDBRemote to look for "flags" nodes
in the target XML that tell you what fields a register has.

https://sourceware.org/gdb/onlinedocs/gdb/Target-Description-Format.html

It will check for various invalid inputs like:
* Flags nodes with 0 fields in them.
* Start or end being > the register size.
* Fields that overlap.
* Required properties not being present (e.g. no name).
* Flag sets being redefined.

If anything untoward is found, we'll just drop the field or the
flag set altogether. Register fields are a "nice to have" so LLDB
shouldn't be crashing because of them, instead just log anything
we throw away. So the user can fix their XML/file a bug with their
vendor.

Once that is done it will sort the fields and pass them to
the RegisterFields class I added previously.

There is no way to see these fields yet, so tests for this code
will come later when the formatting code is added.

The fields are stored in a map of unique pointers on the
ProcessGDBRemote class. It will give out raw pointers on the
assumption that the GDB process lives longer than the users
of those pointers do. Which means RegisterInfo is still a trivial struct
but we are properly destroying the fields when the GDB process ends.

We can't store the fields directly in the map because adding new
items may cause its storage to be reallocated, which would invalidate
pointers we've already given out.

Reviewed By: jasonmolenda, JDevlieghere

Differential Revision: https://reviews.llvm.org/D145574
2023-04-13 12:34:14 +00:00
.github workflows/release-tasks: Fix missing suffix on doxygen tarballs 2023-03-27 23:28:18 -07:00
bolt [BOLT][NFC] Fix UB due to left shift of negative value 2023-04-13 14:29:19 +02:00
clang Make 'static assertion failed' diagnostics point to the static assertion expression 2023-04-13 08:15:13 -04:00
clang-tools-extra [include-cleaner] Handle incomplete template specializations 2023-04-13 13:34:12 +02:00
cmake Revert "[CMake] Unify llvm_check_linker_flag and llvm_check_compiler_linker_flag" 2023-03-28 08:28:17 +00:00
compiler-rt [compiler-rt] [test] [builtins] Pass the right parameters for linking with -nodefaultlibs on mingw targets 2023-04-13 12:11:17 +03:00
cross-project-tests [Dexter] Add timeout options 2023-03-22 13:50:00 +00:00
flang [flang] Add TODO for polymorphic array argument in elemental procedure 2023-04-13 08:23:20 +02:00
libc [LIBC] Fix comments / name of __sched_cpu_count tests 2023-04-12 19:04:45 -05:00
libclc Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
libcxx [libcxx] Rename the now fully private header __std_stream to std_stream.h 2023-04-13 12:03:33 +03:00
libcxxabi [libcxxabi] [test] Don't cast a pointer to long, fixing the test on Windows 2023-04-12 10:17:21 +03:00
libunwind [libunwind] [SEH] Initialize _msContext with RtlCaptureContext 2023-04-13 12:03:35 +03:00
lld [ELF] Cap parallel::strategy to 16 threads when --threads= is unspecified 2023-04-12 13:13:38 -07:00
lldb [lldb] Read register fields from target XML 2023-04-13 12:34:14 +00:00
llvm [llvm][readobj] Add AArch64 SME and SME2 note types 2023-04-13 13:17:38 +01:00
llvm-libgcc Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
mlir [mlir][Linalg] Fix hoist padding through scf.for iter_arg 2023-04-13 05:21:38 -07:00
openmp [OpenMP][libomptarget] Do not rely on AsyncInfoWrapperTy's destructor 2023-04-04 17:51:28 +02:00
polly Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
pstl Revert "Reland "[CMake] Bumps minimum version to 3.20.0."" 2023-03-18 20:32:43 +01:00
runtimes Revert "[CMake] Unify llvm_check_linker_flag and llvm_check_compiler_linker_flag" 2023-03-28 08:28:17 +00:00
third-party Remove an extra // in the IWYU pragma for gtest-matchers.h 2023-03-14 13:11:53 +01:00
utils [mlir] Add transform.foreach_match 2023-04-12 11:01:38 +00:00
.arcconfig
.arclint PR46997: don't run clang-format on clang's testcases. 2020-08-04 17:53:25 -07:00
.clang-format
.clang-tidy
.git-blame-ignore-revs
.gitignore [llvm] Ignore .rej files in .gitignore 2022-04-28 08:44:51 -07:00
.mailmap Fix incorrect .mailmap entry 2023-03-27 14:02:10 -07:00
CONTRIBUTING.md Added instruction to join the llvm discourse and discord group. 2023-03-27 17:02:07 -07:00
LICENSE.TXT
README.md
SECURITY.md

The LLVM Compiler Infrastructure

Welcome to the LLVM project!

This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.

The LLVM project has multiple components. The core of the project is itself called "LLVM". This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.

C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.

Other components include: the libc++ C++ standard library, the LLD linker, and more.

Getting the Source Code and Building LLVM

Consult the Getting Started with LLVM page for information on building and running LLVM.

For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.

Getting in touch

Join the LLVM Discourse forums, Discord chat, or #llvm IRC channel on OFTC.

The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.