[debuginfo-tests] 9e9e6e6 - Adding GDB PrettyPrinter for mlir::Identifier.

Christian Sigg via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 2 23:18:23 PDT 2020


Author: Christian Sigg
Date: 2020-09-03T08:18:09+02:00
New Revision: 9e9e6e698d8ef5dc5b7576058f2022aab2534a52

URL: https://github.com/llvm/llvm-project/commit/9e9e6e698d8ef5dc5b7576058f2022aab2534a52
DIFF: https://github.com/llvm/llvm-project/commit/9e9e6e698d8ef5dc5b7576058f2022aab2534a52.diff

LOG: Adding GDB PrettyPrinter for mlir::Identifier.

This is the first bit from D73546. Primarily setting up the corresponding test. Will add more pretty printers in a separate revision.

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D86937

Added: 
    debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.cpp
    debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.gdb
    mlir/utils/gdb-scripts/prettyprinters.py

Modified: 
    debuginfo-tests/CMakeLists.txt
    debuginfo-tests/lit.cfg.py
    debuginfo-tests/lit.site.cfg.py.in

Removed: 
    


################################################################################
diff  --git a/debuginfo-tests/CMakeLists.txt b/debuginfo-tests/CMakeLists.txt
index d3ac0a4aad90..3750f2e0b026 100644
--- a/debuginfo-tests/CMakeLists.txt
+++ b/debuginfo-tests/CMakeLists.txt
@@ -9,6 +9,12 @@ add_llvm_executable(check-gdb-llvm-support
 )
 target_link_libraries(check-gdb-llvm-support PRIVATE LLVMSupport)
 
+add_llvm_executable(check-gdb-mlir-support
+        llvm-prettyprinters/gdb/mlir-support.cpp
+)
+target_include_directories(check-gdb-mlir-support PRIVATE ${LLVM_EXTERNAL_MLIR_SOURCE_DIR}/include)
+target_link_libraries(check-gdb-mlir-support PRIVATE MLIRIR)
+
 set(DEBUGINFO_TESTS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(DEBUGINFO_TESTS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
@@ -19,6 +25,7 @@ set(DEBUGINFO_TEST_DEPS
   llvm-config
   llvm-objdump
   check-gdb-llvm-support
+  check-gdb-mlir-support
   not
   )
 

diff  --git a/debuginfo-tests/lit.cfg.py b/debuginfo-tests/lit.cfg.py
index 4c45b723d2e9..ba09b1f4cfae 100644
--- a/debuginfo-tests/lit.cfg.py
+++ b/debuginfo-tests/lit.cfg.py
@@ -46,6 +46,7 @@
         config.debuginfo_tests_src_root, 'llgdb-tests', 'test_debuginfo.pl')),
     ToolSubst("%llvm_src_root", config.llvm_src_root),
     ToolSubst("%llvm_tools_dir", config.llvm_tools_dir),
+    ToolSubst("%mlir_src_root", config.mlir_src_root),
 ]
 
 def get_required_attr(config, attr_name):

diff  --git a/debuginfo-tests/lit.site.cfg.py.in b/debuginfo-tests/lit.site.cfg.py.in
index d5893f577aed..4ed49b83bc35 100644
--- a/debuginfo-tests/lit.site.cfg.py.in
+++ b/debuginfo-tests/lit.site.cfg.py.in
@@ -20,6 +20,8 @@ config.target_triple = "@TARGET_TRIPLE@"
 config.host_arch = "@HOST_ARCH@"
 config.is_msvc = lit.util.pythonize_bool("@MSVC@")
 
+config.mlir_src_root = "@MLIR_SOURCE_DIR@"
+
 config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
 
 config.python3_executable = "@Python3_EXECUTABLE@"

diff  --git a/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.cpp b/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.cpp
new file mode 100644
index 000000000000..d38fc3d03ad3
--- /dev/null
+++ b/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.cpp
@@ -0,0 +1,8 @@
+#include "mlir/IR/Identifier.h"
+#include "mlir/IR/MLIRContext.h"
+
+mlir::MLIRContext Context;
+
+auto Identifier = mlir::Identifier::get("foo", &Context);
+
+int main() { return 0; }

diff  --git a/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.gdb b/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.gdb
new file mode 100644
index 000000000000..cca435e640e0
--- /dev/null
+++ b/debuginfo-tests/llvm-prettyprinters/gdb/mlir-support.gdb
@@ -0,0 +1,8 @@
+# RUN: gdb -q -batch -n -iex 'source %mlir_src_root/utils/gdb-scripts/prettyprinters.py' -x %s %llvm_tools_dir/check-gdb-mlir-support | FileCheck %s --dump-input=fail
+# REQUIRES: debug-info
+
+break main
+run
+
+# CHECK: "foo"
+p Identifier

diff  --git a/mlir/utils/gdb-scripts/prettyprinters.py b/mlir/utils/gdb-scripts/prettyprinters.py
new file mode 100644
index 000000000000..5ea20aca83d8
--- /dev/null
+++ b/mlir/utils/gdb-scripts/prettyprinters.py
@@ -0,0 +1,22 @@
+"""GDB pretty printers for MLIR types."""
+
+import gdb.printing
+
+class IdentifierPrinter:
+  """Prints an mlir::Identifier instance."""
+
+  def __init__(self, val):
+    self.entry = val['entry']
+
+  def to_string(self):
+    ptr = (self.entry + 1).cast(gdb.lookup_type('char').pointer());
+    return ptr.string(length=self.entry['keyLength'])
+
+  def display_hint(self):
+    return 'string'
+
+pp = gdb.printing.RegexpCollectionPrettyPrinter('MLIRSupport')
+
+pp.add_printer('mlir::Identifier', '^mlir::Identifier$', IdentifierPrinter)
+
+gdb.printing.register_pretty_printer(gdb.current_objfile(), pp)


        


More information about the llvm-commits mailing list