xref: /llvm-project/cross-project-tests/debuginfo-tests/llvm-prettyprinters/gdb/llvm-support.gdb (revision 1c9a81b2bd91e8cd9baf742fa66650eefbaf552c)
1# RUN: gdb -q -batch -n -iex 'source %llvm_src_root/utils/gdb-scripts/prettyprinters.py' -x %s %llvm_tools_dir/check-gdb-llvm-support | FileCheck %s
2# REQUIRES: debug-info
3
4break main
5run
6
7# CHECK: llvm::ArrayRef of length 3 = {1, 2, 3}
8p ArrayRef
9
10# CHECK: llvm::ArrayRef of length 3 = {1, 2, 3}
11p MutableArrayRef
12
13# CHECK: llvm::DenseMap with 2 elements = {
14# CHECK:   [4] = 5,
15# CHECK:   [6] = 7,
16# CHECK: }
17p DenseMap
18
19# CHECK: llvm::Expected = {value = 8}
20p ExpectedValue
21
22# CHECK: llvm::Expected is error
23p ExpectedError
24
25# CHECK: llvm::SmallVector of Size 3, Capacity 5 = {10, 11, 12}
26p SmallVector
27
28# CHECK: "foo"
29p SmallString
30
31# CHECK: "bar"
32p StringRef
33
34# CHECK: "{{foo|\(missing .*\)}}barbaz"
35p Twine
36
37# CHECK: llvm::StringMap with 2 elements = {["foo"] = 123, ["bar"] = 456}
38py import sys
39py gdb.execute("p StringMap" if sys.version_info.major > 2 else "printf \"llvm::StringMap with 2 elements = {[\\\"foo\\\"] = 123, [\\\"bar\\\"] = 456}\"\n\n")
40
41# CHECK: {pointer = 0xabc, value = 1}
42p PointerIntPair
43
44# CHECK: Containing int * = {pointer = 0xabc}
45p PointerUnion
46
47# CHECK: PointerUnionMembers<llvm::PointerUnion<Z*, float*>,
48p RawPrintingPointerUnion
49
50# Switch to print pretty adds newlines to the following statements.
51set print pretty
52
53# CHECK: {
54# CHECK:   [0] = {
55# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
56# CHECK:       prev = [[Ilist_Sentinel:0x.*]] <Ilist>,
57# CHECK:       next = [[Node_14:0x.*]]
58# CHECK:     },
59# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
60# CHECK:       prev = [[Node_14]],
61# CHECK:       next = [[SimpleIlist_Sentinel:0x.*]] <SimpleIlist>
62# CHECK:     },
63# CHECK:     members of IlistNode:
64# CHECK:     Value = 13
65# CHECK:   },
66# CHECK:   [1] = {
67# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
68# CHECK:       prev = [[Node_13:0x.*]],
69# CHECK:       next = [[Node_15:0x.*]]
70# CHECK:     },
71# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
72# CHECK:       prev = [[Node_15]],
73# CHECK:       next = [[Node_13]]
74# CHECK:     },
75# CHECK:     members of IlistNode:
76# CHECK:     Value = 14
77# CHECK:   },
78# CHECK:   [2] = {
79# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
80# CHECK:       prev = [[Node_14]],
81# CHECK:       next = [[Ilist_Sentinel]] <Ilist>
82# CHECK:     },
83# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
84# CHECK:       prev = [[SimpleIlist_Sentinel]] <SimpleIlist>,
85# CHECK:       next = [[Node_14]]
86# CHECK:     },
87# CHECK:     members of IlistNode:
88# CHECK:     Value = 15
89# CHECK:   }
90# CHECK: }
91p Ilist
92
93# CHECK: {
94# CHECK:   [0] = {
95# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
96# CHECK:       prev = [[Node_14]],
97# CHECK:       next = [[Ilist_Sentinel]] <Ilist>
98# CHECK:     },
99# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
100# CHECK:       prev = [[SimpleIlist_Sentinel]] <SimpleIlist>,
101# CHECK:       next = [[Node_14]]
102# CHECK:     },
103# CHECK:     members of IlistNode:
104# CHECK:     Value = 15
105# CHECK:   },
106# CHECK:   [1] = {
107# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
108# CHECK:       prev = [[Node_13]],
109# CHECK:       next = [[Node_15]]
110# CHECK:     },
111# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
112# CHECK:       prev = [[Node_15]],
113# CHECK:       next = [[Node_13]]
114# CHECK:     },
115# CHECK:     members of IlistNode:
116# CHECK:     Value = 14
117# CHECK:   },
118# CHECK:   [2] = {
119# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<A> >> = {
120# CHECK:       prev = [[Ilist_Sentinel]] <Ilist>,
121# CHECK:       next = [[Node_14]]
122# CHECK:     },
123# CHECK:     <llvm::ilist_node<IlistNode, llvm::ilist_tag<B> >> = {
124# CHECK:       prev = [[Node_14]],
125# CHECK:       next = [[SimpleIlist_Sentinel]] <SimpleIlist>
126# CHECK:     },
127# CHECK:     members of IlistNode:
128# CHECK:     Value = 13
129# CHECK:   }
130# CHECK: }
131p SimpleIlist
132