diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-05-04 08:20:42 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-05-04 08:20:42 +0200 |
| commit | 1246e00478fb5ab2a357de17066fd8738395d9f1 (patch) | |
| tree | 940aee5a7fbd2f980aaf233c8837220fbe8ab4ae /libs/kstd/gdb/string.py | |
| parent | 3ab0a15fb6aba0ad9516da69589b9da8dbd63a8e (diff) | |
| download | kernel-1246e00478fb5ab2a357de17066fd8738395d9f1.tar.xz kernel-1246e00478fb5ab2a357de17066fd8738395d9f1.zip | |
debug: split gdb modules
Diffstat (limited to 'libs/kstd/gdb/string.py')
| -rw-r--r-- | libs/kstd/gdb/string.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libs/kstd/gdb/string.py b/libs/kstd/gdb/string.py new file mode 100644 index 0000000..8230b21 --- /dev/null +++ b/libs/kstd/gdb/string.py @@ -0,0 +1,27 @@ +import gdb + + +class KstdStringPrinter: + + def __init__(self, val): + self.val = val + + def to_string(self): + storage = self.val["m_storage"] + storage_size = int(storage["m_size"]) + + if storage_size <= 0: + return '""' + + data_pointer = storage["m_data"] + string_length = storage_size - 1 + + try: + if hasattr(data_pointer, "lazy_string"): + return data_pointer.lazy_string(encoding="utf-8", length=string_length) + return data_pointer.string(encoding="utf-8", length=string_length) + except gdb.error: + return "<unreadable memory>" + + def display_hint(self): + return "string" |
