about summary refs log tree commit diff homepage
path: root/lib/Solver/Z3Builder.cpp
diff options
context:
space:
mode:
authorDan Liew <daniel.liew@imperial.ac.uk>2016-09-16 08:47:42 +0100
committerDan Liew <delcypher@gmail.com>2017-06-01 11:36:09 +0100
commit9a73071e22b408bb9bf5c24ec2d7eeb3a8a16e96 (patch)
tree608e18daea71e838d35a2d533d509d06a7ce3cfe /lib/Solver/Z3Builder.cpp
parent11fd589bb7c0c075dc9c5cb1e7a0eecd9eb94ef1 (diff)
downloadklee-9a73071e22b408bb9bf5c24ec2d7eeb3a8a16e96.tar.gz
[Z3] Move the `dump()` methods of the Z3NodeHandle<> specializations
into `Z3Builder.cpp` so they can be called from in gdb.
Diffstat (limited to 'lib/Solver/Z3Builder.cpp')
-rw-r--r--lib/Solver/Z3Builder.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/Solver/Z3Builder.cpp b/lib/Solver/Z3Builder.cpp
index d111c3a0..a1448415 100644
--- a/lib/Solver/Z3Builder.cpp
+++ b/lib/Solver/Z3Builder.cpp
@@ -28,6 +28,18 @@ llvm::cl::opt<bool> UseConstructHashZ3(
     llvm::cl::init(true));
 }
 
+namespace klee {
+
+// Declared here rather than `Z3Builder.h` so they can be called in gdb.
+template <> void Z3NodeHandle<Z3_sort>::dump() {
+  llvm::errs() << "Z3SortHandle:\n" << ::Z3_sort_to_string(context, node)
+               << "\n";
+}
+template <> void Z3NodeHandle<Z3_ast>::dump() {
+  llvm::errs() << "Z3ASTHandle:\n" << ::Z3_ast_to_string(context, as_ast())
+               << "\n";
+}
+
 void custom_z3_error_handler(Z3_context ctx, Z3_error_code ec) {
   ::Z3_string errorMsg =
 #ifdef HAVE_Z3_GET_ERROR_MSG_NEEDS_CONTEXT
@@ -820,4 +832,5 @@ Z3ASTHandle Z3Builder::constructActual(ref<Expr> e, int *width_out) {
     return getTrue();
   }
 }
+}
 #endif // ENABLE_Z3