summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2019-12-17 11:30:01 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-12-17 11:30:01 +0100
commit5848f0042c2d6a6dd39d9b8db747f36200c9f543 (patch)
tree37dadfdad1ff6757a88299edaa1aee81940958ac
parent7650617448dad812204a10218133c685b9e3d746 (diff)
downloadNim-5848f0042c2d6a6dd39d9b8db747f36200c9f543.tar.gz
add $nimeq for gdb (#12909)
-rw-r--r--tools/nim-gdb.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/nim-gdb.py b/tools/nim-gdb.py
index 6768ca5c4..e994531b6 100644
--- a/tools/nim-gdb.py
+++ b/tools/nim-gdb.py
@@ -161,6 +161,35 @@ class DollarPrintFunction (gdb.Function):
 
 DollarPrintFunction()
 
+
+################################################################################
+#####  GDB Function, Nim string comparison
+################################################################################
+
+class NimStringEqFunction (gdb.Function):
+  """Compare Nim strings for example in conditionals for breakpoints."""
+
+  def __init__ (self):
+    super (NimStringEqFunction, self).__init__("nimstreq")
+
+  @staticmethod
+  def invoke_static(arg1,arg2):
+    if arg1.type.code == gdb.TYPE_CODE_PTR and arg1.type.target().name == "NimStringDesc":
+      str1 = NimStringPrinter(arg1).to_string()
+    else:
+      str1 = arg1.string()
+    if arg2.type.code == gdb.TYPE_CODE_PTR and arg2.type.target().name == "NimStringDesc":
+      str2 = NimStringPrinter(arg1).to_string()
+    else:
+      str2 = arg2.string()
+
+    return str1 == str2
+
+  def invoke(self, arg1, arg2):
+    return self.invoke_static(arg1, arg2)
+
+NimStringEqFunction()
+
 ################################################################################
 #####  GDB Command, equivalent of Nim's $ operator
 ################################################################################