I’m working on some guidelines for how to support a new platform in LLDB. First I needed to know what we support right now.
So I have come up with the table below listing everything I know of, whether there is an assigned maintainer, what bots it has and how often they run.
Note:
- I have assumed that if there is a maintainer for the operating system, they will handle any architecture of that operating system.
- “Stable” means “not changing a lot”. Which could mean it is less capable than others, but it has not changed in a while.
- “Experimental” also means “in progress”.
- “Other Public Community Bot” means a community that is downstream of LLVM. For example Debian’s package builds.
- The purpose of this exercise is not comparison or ranking, the lack of something does not make a platform “bad”. If LLDB supports it, clearly it was doing something right, and this is not about changing anyone’s workflows.
The table is in-line here or you can view it on Google Sheets.
| Operating System | Architecture | Status | Maintainer | Buildbot | Other Public Community Bot | Validation (per…) | Notes |
|---|---|---|---|---|---|---|---|
| macOS | i386 | Stable | TRUE | TRUE | TRUE | commit | Apple covers all of this in Green Dragon, there is also Homebew and MacPorts. |
| x86_64 | Stable | TRUE | TRUE | TRUE | commit | ||
| AArch64 | Stable | TRUE | TRUE | TRUE | commit | ||
| iOS/tvOS/watchOS (simulator) | i386 | Stable | TRUE | TRUE | FALSE | commit | |
| x86_64 | Stable | TRUE | TRUE | FALSE | commit | ||
| AArch64 | Stable | TRUE | TRUE | FALSE | commit | ||
| iOS/tvOS/watchOS (device) | Arm | Stable | TRUE | TRUE | FALSE | commit | |
| AArch64 | Stable | TRUE | TRUE | FALSE | commit | ||
| visionOS (device) | AArch64 | Stable | TRUE | TRUE | FALSE | commit | |
| Linux | i386 | Stable | TRUE | FALSE | TRUE | release | Debian packages lldb for everything it supports - https://packages.debian.org/bookworm/lldb |
| x86_64 | Stable | TRUE | TRUE | TRUE | commit | Myself and Pavel cover Linux, in future we’d ask for an architecture maintainer too. | |
| Arm | Stable | TRUE | TRUE | TRUE | commit | ||
| AArch64 | Stable | TRUE | TRUE | TRUE | commit | ||
| PPC64le | Stable | TRUE | FALSE | TRUE | release | ||
| s390x | Stable | TRUE | FALSE | TRUE | release | ||
| RISC-V | Experimental | FALSE | FALSE | FALSE | ? | I presume Qualcomm have testing downstream. | |
| LoongArch | Experimental | FALSE | FALSE | FALSE | ? | I presume LoongSon have testing downstream. | |
| Hexagon | Stable | TRUE | FALSE | FALSE | ? | Qualcomm may have downstream testing. | |
| FreeBSD | i386 | Stable | TRUE | FALSE | TRUE | release | Usually does not skip a release. Has lldb in base system and ports. |
| x86_64 | Stable | TRUE | FALSE | TRUE | release | ||
| Arm | Stable | TRUE | FALSE | TRUE | release | ||
| AArch64 | Stable | TRUE | FALSE | TRUE | release | ||
| PPC64le | Stable | TRUE | FALSE | TRUE | release | ||
| MIPS64 | Stable | TRUE | FALSE | FALSE | N/A | Unsupported as of FreeBSD 14.0 -https://www.freebsd.org/platforms/mips/ | |
| NetBSD | i386 | Stable | FALSE | FALSE | TRUE | release | In 2017 there was a buildbot - The LLDB Debugger on NetBSD Work was done in 2020 - https://blog.netbsd.org/tnf/entry/lldb_work_concluded - lldb integrated into source tree. Package https://cdn.netbsd.org/pub/NetBSD/NetBSD-current/pkgsrc/devel/lldb/index.html but this may be different to one in base system. I assume a release cadence like FreeBSD’s. |
| x86_64 | Stable | FALSE | FALSE | TRUE | release | ||
| OpenBSD | i386 | Stable | FALSE | FALSE | FALSE | release (some skipped) | Ships with the base system and has ports for other versions. System version may skip releases. |
| x86_64 | Stable | FALSE | FALSE | FALSE | release (some skipped) | ||
| Windows | i386 | Stable | TRUE | FALSE | TRUE | commit | Counting Omair as maintainer for all Windows architectures. MinGW builds this, runs smoke tests. |
| x86_64 | Stable | TRUE | FALSE | TRUE | commit | MinGW builds this, runs smoke tests. | |
| AArch64 | Stable | TRUE | TRUE | TRUE | commit | MinGW builds this. | |
| Arm | Stable | TRUE | FALSE | FALSE | ? | Smoke tested by MinGW but has known issues. | |
| Android | Arm | Stable | TRUE | FALSE | TRUE | NDK release | Google checks per NDK release, quite likely uses their own intergration tests instead of the ones in tree. |
| AArch64 | Stable | TRUE | FALSE | TRUE | NDK release | ||
| i386 | Stable | TRUE | FALSE | TRUE | NDK release | ||
| x86_64 | Stable | TRUE | FALSE | TRUE | NDK release | ||
| AIX | PPC64 (BE) | Experimental | FALSE | FALSE | FALSE | N/A | https://discourse.llvm.org/t/port-lldb-to-ibm-aix/80640 |
| QNX | AArch64 | Proposed | FALSE | FALSE | FALSE | N/A | https://discourse.llvm.org/t/remote-debug-of-aarch64-targets-running-qnx/83326 |
| Bare Metal | Any architecture listed above | Stable | FALSE | FALSE | FALSE | N/A | Exists as a consequence of the debug client/debug server model, “just works” or “just doesn’t”. |
| Bare Metal specific | MSP430 | Stable | FALSE | FALSE | FALSE | N/A | LLDB contains fixes to handle the msp430 specific debug server. |
| Legacy Arm / Arm M Profile | Stable | FALSE | FALSE | FALSE | N/A | ||
| Arc | Stable | FALSE | FALSE | FALSE | N/A |
Does anyone know of any others?
At the moment I know that Arc may in fact be for Linux on Arc, and my details on the BSDs are fuzzy. However, it’s enough for my purposes.
I thought it would be interesting for folks to see this all laid out. Considering how much we support, the project is very stable.
So to be extra clear: this is not a prelude to a new one size fits all standard for validation. It will be more along the lines of a set of “have you thought about X?” questions, so that we get the best outcomes for the contributors and for LLDB itself, and we are fair in how we asses proposals.