Issue 183388
Summary LLDB 22 Regression `SBFrame.EvaluateExpression("$sp")` fails with "TypeSystem for language assembly doesn't exist"
Labels new issue
Assignees
Reporter patryk4815
    On AArch64 (Fedora 43), evaluating a register _expression_ such as `"$sp"`
from Python via `SBFrame.EvaluateExpression` works in LLDB 21.1.7 but
fails in LLDB 22.1.0 with:

    error: Could not find type system for language assembly: TypeSystem for language assembly doesn't exist

This appears to be a regression 22.1.0 affecting
_expression_ evaluation in frames whose source language is detected as
assembly (e.g. `_start` in the dynamic loader).

------------------------------------------------------------------------

## Environment

-   OS: Fedora 43
-   Architecture: aarch64
-   LLDB 21.1.7 (working)
-   LLDB 22.1.0 (failing)
-   Tested via `lldb-for-pwndbg` Python packages:
    -   `lldb-for-pwndbg==21.1.7.post1`
    -   `lldb-for-pwndbg==22.1.0.post1`

------------------------------------------------------------------------

## Reproducer

### Test program

``` c
#include <stdio.h>

int main() {
    printf("hello");
    return 0;
}
```

Compiled as a dynamically linked AArch64 ELF (`gcc ./hello.c -o ./hello -g`)
(e.g. `hello.aarch64.dynamic`).

------------------------------------------------------------------------

### LLDB 21.1.7 (works)

    $ uv tool run --from lldb-for-pwndbg==21.1.7.post1 lldb
    (lldb) version
    lldb version 21.1.7
    (lldb) file ./hello.aarch64.dynamic
    (lldb) process launch -s
    Process stopped at ld-linux-aarch64.so.1`_start
    (lldb) script
    >>> lldb.frame
    frame #0: 0x0000fffff7fd9d80 ld-linux-aarch64.so.1`_start at dl-start.S:22
    >>> lldb.frame.EvaluateExpression('$sp')
    (unsigned long) $0 = 281474976707136

_expression_ evaluation of `$sp` succeeds.

------------------------------------------------------------------------

### LLDB 22.1.0 (fails)

    $ uv tool run --from lldb-for-pwndbg==22.1.0.post1 lldb
    (lldb) version
    lldb version 22.1.0
    (lldb) file ./hello.aarch64.dynamic
    (lldb) process launch -s
    Process stopped at ld-linux-aarch64.so.1`_start
    (lldb) script
    >>> lldb.frame
    frame #0: 0x0000fffff7fd9d80 ld-linux-aarch64.so.1`_start at dl-start.S:22
    >>> lldb.frame.EvaluateExpression('$sp')
    error: Could not find type system for language assembly: TypeSystem for language assembly doesn't exist

Now `EvaluateExpression('$sp')` fails when the current frame language is
assembly.


_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to