diff options
Diffstat (limited to 'gdb/python/lib/gdb/function/strfns.py')
-rw-r--r-- | gdb/python/lib/gdb/function/strfns.py | 100 |
1 files changed, 52 insertions, 48 deletions
diff --git a/gdb/python/lib/gdb/function/strfns.py b/gdb/python/lib/gdb/function/strfns.py index 8ffc111..596f4d1 100644 --- a/gdb/python/lib/gdb/function/strfns.py +++ b/gdb/python/lib/gdb/function/strfns.py @@ -21,76 +21,80 @@ import re class _MemEq(gdb.Function): - """$_memeq - compare bytes of memory. + """$_memeq - compare bytes of memory. -Usage: $_memeq (A, B, LEN) + Usage: $_memeq (A, B, LEN) -Returns: - True if LEN bytes at A and B compare equally.""" - def __init__(self): - super(_MemEq, self).__init__("_memeq") + Returns: + True if LEN bytes at A and B compare equally.""" - def invoke(self, a, b, length): - if length < 0: - raise ValueError("length must be non-negative") - if length == 0: - return True - # The argument(s) to vector are [low_bound,]high_bound. - byte_vector = gdb.lookup_type("char").vector(length - 1) - ptr_byte_vector = byte_vector.pointer() - a_ptr = a.reinterpret_cast(ptr_byte_vector) - b_ptr = b.reinterpret_cast(ptr_byte_vector) - return a_ptr.dereference() == b_ptr.dereference() + def __init__(self): + super(_MemEq, self).__init__("_memeq") + + def invoke(self, a, b, length): + if length < 0: + raise ValueError("length must be non-negative") + if length == 0: + return True + # The argument(s) to vector are [low_bound,]high_bound. + byte_vector = gdb.lookup_type("char").vector(length - 1) + ptr_byte_vector = byte_vector.pointer() + a_ptr = a.reinterpret_cast(ptr_byte_vector) + b_ptr = b.reinterpret_cast(ptr_byte_vector) + return a_ptr.dereference() == b_ptr.dereference() class _StrLen(gdb.Function): - """$_strlen - compute string length. + """$_strlen - compute string length. + + Usage: $_strlen (A) -Usage: $_strlen (A) + Returns: + Length of string A, assumed to be a string in the current language.""" -Returns: - Length of string A, assumed to be a string in the current language.""" - def __init__(self): - super(_StrLen, self).__init__("_strlen") + def __init__(self): + super(_StrLen, self).__init__("_strlen") - def invoke(self, a): - s = a.string() - return len(s) + def invoke(self, a): + s = a.string() + return len(s) class _StrEq(gdb.Function): - """$_streq - check string equality. + """$_streq - check string equality. -Usage: $_streq (A, B) + Usage: $_streq (A, B) -Returns: - True if A and B are identical strings in the current language. + Returns: + True if A and B are identical strings in the current language. -Example (amd64-linux): - catch syscall open - cond $bpnum $_streq((char*) $rdi, "foo")""" - def __init__(self): - super(_StrEq, self).__init__("_streq") + Example (amd64-linux): + catch syscall open + cond $bpnum $_streq((char*) $rdi, "foo")""" - def invoke(self, a, b): - return a.string() == b.string() + def __init__(self): + super(_StrEq, self).__init__("_streq") + + def invoke(self, a, b): + return a.string() == b.string() class _RegEx(gdb.Function): - """$_regex - check if a string matches a regular expression. + """$_regex - check if a string matches a regular expression. + + Usage: $_regex (STRING, REGEX) -Usage: $_regex (STRING, REGEX) + Returns: + True if string STRING (in the current language) matches the + regular expression REGEX.""" -Returns: - True if string STRING (in the current language) matches the - regular expression REGEX.""" - def __init__(self): - super(_RegEx, self).__init__("_regex") + def __init__(self): + super(_RegEx, self).__init__("_regex") - def invoke(self, string, regex): - s = string.string() - r = re.compile(regex.string()) - return bool(r.match(s)) + def invoke(self, string, regex): + s = string.string() + r = re.compile(regex.string()) + return bool(r.match(s)) # GDB will import us automagically via gdb/__init__.py. |