diff options
Diffstat (limited to 'share/gdb/python/gdb/function/strfns.py')
-rw-r--r-- | share/gdb/python/gdb/function/strfns.py | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/share/gdb/python/gdb/function/strfns.py b/share/gdb/python/gdb/function/strfns.py deleted file mode 100644 index d29ff61..0000000 --- a/share/gdb/python/gdb/function/strfns.py +++ /dev/null @@ -1,100 +0,0 @@ -# Useful gdb string convenience functions. -# Copyright (C) 2012-2019 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -"""$_memeq, $_strlen, $_streq, $_regex""" - -import gdb -import re - - -class _MemEq(gdb.Function): - """$_memeq - compare bytes of memory - -Usage: $_memeq (A, B, LEN) - -Returns: - True if LEN bytes at A and B compare equally.""" - 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 - -Usage: $_strlen (A) - -Returns: - Length of string A, assumed to be a string in the current language.""" - def __init__(self): - super(_StrLen, self).__init__("_strlen") - - def invoke(self, a): - s = a.string() - return len(s) - - -class _StrEq(gdb.Function): - """$_streq - check string equality - -Usage: $_streq (A, B) - -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") - - def invoke(self, a, b): - return a.string() == b.string() - - -class _RegEx(gdb.Function): - """$_regex - check if a string matches a regular expression - -Usage: $_regex (STRING, REGEX) - -Returns: - True if string STRING (in the current language) matches the - regular expression 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)) - - -# GDB will import us automagically via gdb/__init__.py. -_MemEq() -_StrLen() -_StrEq() -_RegEx() |