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
)
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})
llvm-config
llvm-objdump
check-gdb-llvm-support
+ check-gdb-mlir-support
not
)
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):
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@"
--- /dev/null
+#include "mlir/IR/Identifier.h"
+#include "mlir/IR/MLIRContext.h"
+
+mlir::MLIRContext Context;
+
+auto Identifier = mlir::Identifier::get("foo", &Context);
+
+int main() { return 0; }
--- /dev/null
+# 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
--- /dev/null
+"""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)