aboutsummaryrefslogtreecommitdiff
path: root/scripts/gdb/kstd/string.py
blob: 6fa99960b4b933193c572cf9a50a92617d0bd3f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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:
            string_data = data_pointer.string(encoding="utf-8", length=string_length)
            return f"{string_data}"
        except gdb.error:
            return "<unreadable memory>"

    def display_hint(self):
        return "string"