SHOW:
|
|
- or go back to the newest paste.
1 | > LLVM_SYMBOLIZER_PATH=llvm-symbolizer-11 ~/git/llvm-project/build_x64_optdebug/bin/lldb a.out | |
2 | (lldb) target create "a.out" | |
3 | Current executable set to '/home/werat/src/cpp/a.out' (x86_64). | |
4 | (lldb) b main | |
5 | Breakpoint 1: where = a.out`main + 20 at main.cc:10:3, address = 0x0000000000401124 | |
6 | (lldb) r | |
7 | Process 514701 launched: '/home/werat/src/cpp/a.out' (x86_64) | |
8 | Process 514701 stopped | |
9 | * thread #1, name = 'a.out', stop reason = breakpoint 1.1 | |
10 | frame #0: 0x0000000000401124 a.out`main(argc=1, argv=0x00007fffffffe0d8) at main.cc:10:3 | |
11 | 7 int main(int argc, char* argv[]) { | |
12 | 8 (void)Foo::Bar; | |
13 | 9 | |
14 | -> 10 return 0; | |
15 | 11 } | |
16 | (lldb) log enable lldb expr -v | |
17 | (lldb) p (int*)100 + (long long)(&Foo::Bar) | |
18 | == [UserExpression::Evaluate] Parsing expression (int*)100 + (long long)(&Foo::Bar) == | |
19 | ClangUserExpression::ScanContext() | |
20 | Parsing the following code: | |
21 | #line 1 "<lldb wrapper prefix>" | |
22 | #ifndef offsetof | |
23 | #define offsetof(t, d) __builtin_offsetof(t, d) | |
24 | #endif | |
25 | #ifndef NULL | |
26 | #define NULL (__null) | |
27 | #endif | |
28 | #ifndef Nil | |
29 | #define Nil (__null) | |
30 | #endif | |
31 | #ifndef nil | |
32 | #define nil (__null) | |
33 | #endif | |
34 | #ifndef YES | |
35 | #define YES ((BOOL)1) | |
36 | #endif | |
37 | #ifndef NO | |
38 | #define NO ((BOOL)0) | |
39 | #endif | |
40 | typedef __INT8_TYPE__ int8_t; | |
41 | typedef __UINT8_TYPE__ uint8_t; | |
42 | typedef __INT16_TYPE__ int16_t; | |
43 | typedef __UINT16_TYPE__ uint16_t; | |
44 | typedef __INT32_TYPE__ int32_t; | |
45 | typedef __UINT32_TYPE__ uint32_t; | |
46 | typedef __INT64_TYPE__ int64_t; | |
47 | typedef __UINT64_TYPE__ uint64_t; | |
48 | typedef __INTPTR_TYPE__ intptr_t; | |
49 | typedef __UINTPTR_TYPE__ uintptr_t; | |
50 | typedef __SIZE_TYPE__ size_t; | |
51 | typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
52 | typedef unsigned short unichar; | |
53 | extern "C" | |
54 | { | |
55 | int printf(const char * __restrict, ...); | |
56 | } | |
57 | ||
58 | ||
59 | ||
60 | typedef signed char BOOL; | |
61 | ||
62 | ||
63 | void | |
64 | $__lldb_expr(void *$__lldb_arg) | |
65 | { | |
66 | ; | |
67 | #line 1 "<user expression 0>" | |
68 | (int*)100 + (long long)(&Foo::Bar) | |
69 | ; | |
70 | #line 1 "<lldb wrapper suffix>" | |
71 | } | |
72 | ||
73 | Frame has language of type c++14 | |
74 | Using x86_64-unknown-linux-gnu as the target triple | |
75 | Using SIMD alignment: 128 | |
76 | Target datalayout string: 'e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128' | |
77 | Target ABI: '' | |
78 | Target vector alignment: 0 | |
79 | TransformTopLevelDecl(int8_t) | |
80 | TransformTopLevelDecl(uint8_t) | |
81 | TransformTopLevelDecl(int16_t) | |
82 | TransformTopLevelDecl(uint16_t) | |
83 | TransformTopLevelDecl(int32_t) | |
84 | TransformTopLevelDecl(uint32_t) | |
85 | TransformTopLevelDecl(int64_t) | |
86 | TransformTopLevelDecl(uint64_t) | |
87 | TransformTopLevelDecl(intptr_t) | |
88 | TransformTopLevelDecl(uintptr_t) | |
89 | TransformTopLevelDecl(size_t) | |
90 | TransformTopLevelDecl(ptrdiff_t) | |
91 | TransformTopLevelDecl(unichar) | |
92 | TransformTopLevelDecl(printf) | |
93 | TransformTopLevelDecl(BOOL) | |
94 | ClangExpressionDeclMap::FindExternalVisibleDecls for '$__lldb_arg' in a 'TranslationUnit' | |
95 | CEDM::FEVD Searching the root namespace | |
96 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD3F20 'Expression ASTContext for '<user expression 0>'' for '$__lldb_arg' in a 'TranslationUnit' | |
97 | CAS::FEVD Searching the root namespace | |
98 | ClangExpressionDeclMap::FindExternalVisibleDecls for '$__lldb_expr' in a 'TranslationUnit' | |
99 | CEDM::FEVD Searching the root namespace | |
100 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD3F20 'Expression ASTContext for '<user expression 0>'' for '$__lldb_expr' in a 'TranslationUnit' | |
101 | CAS::FEVD Searching the root namespace | |
102 | ClangExpressionDeclMap::FindExternalVisibleDecls for 'Foo' in a 'TranslationUnit' | |
103 | CEDM::FEVD Searching the root namespace | |
104 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD3F20 'Expression ASTContext for '<user expression 0>'' for 'Foo' in a 'TranslationUnit' | |
105 | CAS::FEVD Searching the root namespace | |
106 | CAS::FEVD Matching type found for "Foo": Foo | |
107 | [ClangASTImporter] Imported (CXXRecordDecl*)0x0000555FC5FF55D8, named Foo (from (Decl*)0x0000555FC5DE1268), metadata 61 | |
108 | [ClangASTImporter] Decl has no origin information in (ASTContext*)0x0000555FC5DD45E0 | |
109 | [ClangASTImporter] To is a TagDecl - attributes Lexical [complete->complete] | |
110 | FindExternalLexicalDecls on (ASTContext*)0x0000555FC5FD3F20 'Expression ASTContext for '<user expression 0>'' in 'Foo' (%sDecl*)CXXRecord | |
111 | FELD Original decl 0x0000555FC5DD45E0 (Decl*)0x0000555fc5de1268: | |
112 | CXXRecordDecl 0x555fc5de1268 <<invalid sloc>> <invalid sloc> struct Foo definition | |
113 | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init | |
114 | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr | |
115 | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param | |
116 | | |-MoveConstructor exists simple trivial needs_implicit | |
117 | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param | |
118 | | |-MoveAssignment exists simple trivial needs_implicit | |
119 | | `-Destructor simple irrelevant trivial needs_implicit | |
120 | `-VarDecl 0x555fc5de13a0 <<invalid sloc>> <invalid sloc> Bar 'int' static | |
121 | ||
122 | FELD Adding [to CXXRecordDecl Foo] lexical VarDecl VarDecl 0x555fc5de13a0 <<invalid sloc>> <invalid sloc> Bar 'int' static | |
123 | ||
124 | [ClangASTImporter] Imported (VarDecl*)0x0000555FC5FF5728, named Bar (from (Decl*)0x0000555FC5DE13A0), metadata 18446744073709551615 | |
125 | [ClangASTImporter] Decl has no origin information in (ASTContext*)0x0000555FC5DD45E0 | |
126 | TransformTopLevelDecl($__lldb_expr) | |
127 | Untransformed function AST: | |
128 | void $__lldb_expr(void *$__lldb_arg) { | |
129 | ; | |
130 | (int *)100 + (long long)(&Foo::Bar); | |
131 | } | |
132 | ||
133 | Last statement is an rvalue with type: int * | |
134 | Transformed function AST: | |
135 | void $__lldb_expr(void *$__lldb_arg) { | |
136 | ; | |
137 | static int *$__lldb_expr_result(int *)100 + (long long)(&Foo::Bar); | |
138 | } | |
139 | ||
140 | Found function _Z12$__lldb_exprPv for $__lldb_expr | |
141 | PrepareForExecution - Current expression language is c++14 | |
142 | ||
143 | Module as passed in to IRForTarget: | |
144 | "; ModuleID = '$__lldb_module' | |
145 | source_filename = "$__lldb_module" | |
146 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
147 | target triple = "x86_64-unknown-linux-gnu" | |
148 | ||
149 | @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8 | |
150 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
151 | @_ZN3Foo3BarE = external global i32, align 4 | |
152 | ||
153 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
154 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
155 | entry: | |
156 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !6 | |
157 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
158 | %0 = load i8, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
159 | %guard.uninitialized = icmp eq i8 %0, 0 | |
160 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !7 | |
161 | ||
162 | init.check: ; preds = %entry | |
163 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result", align 8 | |
164 | store i8 1, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
165 | br label %init.end | |
166 | ||
167 | init.end: ; preds = %init.check, %entry | |
168 | ret void | |
169 | } | |
170 | ||
171 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
172 | ||
173 | !clang.global.decl.ptrs = !{!0, !1, !0, !2} | |
174 | !llvm.module.flags = !{!3, !4} | |
175 | !llvm.ident = !{!5} | |
176 | ||
177 | !0 = !{i32** @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result", i64 93869832559168} | |
178 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832098952} | |
179 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832099624} | |
180 | !3 = !{i32 1, !"wchar_size", i32 4} | |
181 | !4 = !{i32 7, !"frame-pointer", i32 2} | |
182 | !5 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
183 | !6 = !{i64 93869832098728} | |
184 | !7 = !{!"branch_weights", i32 1, i32 1048575} | |
185 | " | |
186 | Result name: "_ZZ12$__lldb_exprPvE19$__lldb_expr_result" | |
187 | Found result in the IR: "@"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8" | |
188 | Found result decl: "static int *$__lldb_expr_result(int *)100 + (long long)(&Foo::Bar)" | |
189 | Result decl type: "int *" | |
190 | Creating a new result global: "$RESULT_NAME" with size 8 | |
191 | Replacing "@"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8" with "@"$RESULT_NAME" = external global i32*" | |
192 | [ClangASTImporter] DeportType called on (int *Type*)0x0000555FC5FF5570 from (ASTContext*)0x0000555FC5FD3F20 to (ASTContext*)0x0000555FC5F58FA0 | |
193 | Module after creating the result variable: | |
194 | "; ModuleID = '$__lldb_module' | |
195 | source_filename = "$__lldb_module" | |
196 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
197 | target triple = "x86_64-unknown-linux-gnu" | |
198 | ||
199 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
200 | @_ZN3Foo3BarE = external global i32, align 4 | |
201 | @reloc_placeholder = internal global i8 0 | |
202 | @"$RESULT_NAME" = external global i32* | |
203 | ||
204 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
205 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
206 | entry: | |
207 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
208 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
209 | %0 = load i8, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
210 | %guard.uninitialized = icmp eq i8 %0, 0 | |
211 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
212 | ||
213 | init.check: ; preds = %entry | |
214 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** @"$RESULT_NAME", align 8 | |
215 | store i8 1, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
216 | br label %init.end | |
217 | ||
218 | init.end: ; preds = %init.check, %entry | |
219 | ret void | |
220 | } | |
221 | ||
222 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
223 | ||
224 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
225 | !llvm.module.flags = !{!4, !5} | |
226 | !llvm.ident = !{!6} | |
227 | ||
228 | !0 = distinct !{i32** @"$RESULT_NAME", i64 93869832559168} | |
229 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832098952} | |
230 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832099624} | |
231 | !3 = !{i32** @"$RESULT_NAME", i64 93869832559168} | |
232 | !4 = !{i32 1, !"wchar_size", i32 4} | |
233 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
234 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
235 | !7 = !{i64 93869832098728} | |
236 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
237 | " | |
238 | Examining _ZGVZ12$__lldb_exprPvE19$__lldb_expr_result, DeclForGlobalValue returns 0x0000000000000000 | |
239 | Examining _ZN3Foo3BarE, DeclForGlobalValue returns 0x0000555FC5FF5728 | |
240 | MaybeHandleVariable (@_ZN3Foo3BarE = external global i32, align 4) | |
241 | Type of "Bar" is [clang "int", llvm "i32*"] [size 4, align 4] | |
242 | Examining reloc_placeholder, DeclForGlobalValue returns 0x0000000000000000 | |
243 | Examining $RESULT_NAME, DeclForGlobalValue returns 0x0000555FC6065A40 | |
244 | MaybeHandleVariable (@"$RESULT_NAME" = external global i32*) | |
245 | Type of "$__lldb_expr_result" is [clang "int **", llvm "i32***"] [size 8, align 8] | |
246 | Adding value for (NamedDecl*)0x0000555FC6065A40 [$__lldb_expr_result - $RESULT_NAME] to the structure | |
247 | Already placed at 0x0 | |
248 | Placed at 0x0 | |
249 | Element arrangement: | |
250 | Arg: "i8* %"$__lldb_arg"" | |
251 | "$RESULT_NAME" ("$__lldb_expr_result") placed at 0 | |
252 | Replacing [@"$RESULT_NAME" = external global i32*] | |
253 | Total structure [align 8, size 8] | |
254 | Module after preparing for execution: | |
255 | "; ModuleID = '$__lldb_module' | |
256 | source_filename = "$__lldb_module" | |
257 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
258 | target triple = "x86_64-unknown-linux-gnu" | |
259 | ||
260 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
261 | @_ZN3Foo3BarE = external global i32, align 4 | |
262 | @reloc_placeholder = internal global i8 0 | |
263 | ||
264 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
265 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
266 | entry: | |
267 | %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
268 | %1 = bitcast i8* %0 to i32*** | |
269 | %2 = load i32**, i32*** %1, align 8 | |
270 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
271 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
272 | %guard.uninitialized = icmp eq i8 0, 0 | |
273 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
274 | ||
275 | init.check: ; preds = %entry | |
276 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
277 | br label %init.end | |
278 | ||
279 | init.end: ; preds = %init.check, %entry | |
280 | ret void | |
281 | } | |
282 | ||
283 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
284 | ||
285 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
286 | !llvm.module.flags = !{!4, !5} | |
287 | !llvm.ident = !{!6} | |
288 | ||
289 | !0 = distinct !{null, i64 93869832559168} | |
290 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832098952} | |
291 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832099624} | |
292 | !3 = distinct !{null, i64 93869832559168} | |
293 | !4 = !{i32 1, !"wchar_size", i32 4} | |
294 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
295 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
296 | !7 = !{i64 93869832098728} | |
297 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
298 | " | |
299 | [ClangASTImporter] Forgetting destination (ASTContext*)0x0000555FC5FD3F20 | |
300 | [ClangASTImporter] Forgetting source->dest (ASTContext*)0x0000555FC5FD3F20->(ASTContext*)0x0000555FC5F58FA0 | |
301 | == [UserExpression::Evaluate] Executing expression == | |
302 | IRMemoryMap::Malloc (15, 0x8, 0x3, eAllocationPolicyHostOnly) -> 0x7ffff7fca000 | |
303 | IRMemoryMap::Malloc (524295, 0x8, 0x3, eAllocationPolicyHostOnly) -> 0x7ffff79f6000 | |
304 | IRMemoryMap::Malloc process_sp=0x555fc5de9ed0, process_sp->CanJIT()=true, process_sp->IsAlive()=true | |
305 | IRMemoryMap::WriteMemory (0x7ffff7fca010, 0x555fc5d345e0, 0x8) went to [0x7ffff7fca010..0x7ffff7fca01f) | |
306 | IRMemoryMap::Malloc (15, 0x8, 0x3, eAllocationPolicyMirror) -> 0x7ffff7fca010 | |
307 | IRMemoryMap::WriteMemory (0x7ffff7fca000, 0x7ffd03bc9ef0, 0x8) went to [0x7ffff7fca000..0x7ffff7fca00f) | |
308 | Materializer::Materialize (frame_sp = 0x7f718c380640, process_address = 0x7ffff7fca000) materialized: | |
309 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5cdca40, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
310 | IRMemoryMap::ReadMemory (0x7ffff7fca010, 0x555fc5cdca40, 0x8) came from [0x7ffff7fca010..0x7ffff7fca01f) | |
311 | 0x7ffff7fca000: EntityResultVariable | |
312 | Pointer: | |
313 | 0x7ffff7fca000: 10 a0 fc f7 ff 7f 00 00 | |
314 | Temporary allocation: | |
315 | 0x7ffff7fca000: 00 00 00 00 00 00 00 00 | |
316 | ||
317 | Module as passed in to IRInterpreter::Interpret: | |
318 | "; ModuleID = '$__lldb_module' | |
319 | source_filename = "$__lldb_module" | |
320 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
321 | target triple = "x86_64-unknown-linux-gnu" | |
322 | ||
323 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
324 | @_ZN3Foo3BarE = external global i32, align 4 | |
325 | @reloc_placeholder = internal global i8 0 | |
326 | ||
327 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
328 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
329 | entry: | |
330 | %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
331 | %1 = bitcast i8* %0 to i32*** | |
332 | %2 = load i32**, i32*** %1, align 8 | |
333 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
334 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
335 | %guard.uninitialized = icmp eq i8 0, 0 | |
336 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
337 | ||
338 | init.check: ; preds = %entry | |
339 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
340 | br label %init.end | |
341 | ||
342 | init.end: ; preds = %init.check, %entry | |
343 | ret void | |
344 | } | |
345 | ||
346 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
347 | ||
348 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
349 | !llvm.module.flags = !{!4, !5} | |
350 | !llvm.ident = !{!6} | |
351 | ||
352 | !0 = distinct !{null, i64 93869832559168} | |
353 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832098952} | |
354 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832099624} | |
355 | !3 = distinct !{null, i64 93869832559168} | |
356 | !4 = !{i32 1, !"wchar_size", i32 4} | |
357 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
358 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
359 | !7 = !{i64 93869832098728} | |
360 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
361 | " | |
362 | IRMemoryMap::WriteMemory (0x7ffff7a75ff8, 0x7ffd03bc9ae0, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
363 | Made an allocation for argument i8* %"$__lldb_arg" | |
364 | Data region : 7ffff7fca000 | |
365 | Ref region : 7ffff7a75ff8 | |
366 | Interpreting %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
367 | IRMemoryMap::WriteMemory (0x7ffff7a75ff0, 0x555fc5de8830, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
368 | Interpreted a GetElementPtrInst | |
369 | P : i8* %"$__lldb_arg" 0x7ffff7a75ff8 | |
370 | Poffset : %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 0x7ffff7a75ff0 | |
371 | Interpreting %1 = bitcast i8* %0 to i32*** | |
372 | IRMemoryMap::WriteMemory (0x7ffff7a75fe8, 0x555fc5de8830, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
373 | Interpreting %2 = load i32**, i32*** %1, align 8 | |
374 | IRMemoryMap::ReadMemory (0x7ffff7a75fe8, 0x555fc5de8830, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
375 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5de8830, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
376 | IRMemoryMap::WriteMemory (0x7ffff7a75fe0, 0x555fc5de8830, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
377 | Interpreted a LoadInst | |
378 | P : 0x7ffff7a75fe8 | |
379 | R : 0x7ffff7fca000 | |
380 | D : 0x7ffff7a75fe0 | |
381 | Interpreting %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
382 | IRMemoryMap::WriteMemory (0x7ffff7a75fd0, 0x7ffd03bc9ae0, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
383 | Interpreted an AllocaInst | |
384 | R : 0x7ffff7a75fd8 | |
385 | P : 0x7ffff7a75fd0 | |
386 | Interpreting store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
387 | IRMemoryMap::ReadMemory (0x7ffff7a75fd0, 0x555fc5c41d00, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
388 | IRMemoryMap::ReadMemory (0x7ffff7a75ff8, 0x555fc5c41d00, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
389 | IRMemoryMap::WriteMemory (0x7ffff7a75fd8, 0x555fc5c41d00, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
390 | Interpreted a StoreInst | |
391 | D : 0x7ffff7a75ff8 | |
392 | P : 0x7ffff7a75fd0 | |
393 | R : 0x7ffff7a75fd8 | |
394 | Interpreting %guard.uninitialized = icmp eq i8 0, 0 | |
395 | IRMemoryMap::WriteMemory (0x7ffff7a75fcf, 0x555fc5c41d00, 0x1) went to [0x7ffff79f6000..0x7ffff7a76007) | |
396 | Interpreted an ICmpInst | |
397 | L : i8 0 | |
398 | R : i8 0 | |
399 | = : %guard.uninitialized = icmp eq i8 0, 0 0x7ffff7a75fcf | |
400 | Interpreting br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
401 | Interpreted a BrInst with a condition | |
402 | cond : %guard.uninitialized = icmp eq i8 0, 0 0x7ffff7a75fcf | |
403 | Interpreting store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
404 | IRMemoryMap::WriteMemory (0x7ffff7a75fc0, 0x555fc5c41d00, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
405 | IRMemoryMap::ReadMemory (0x7ffff7a75fe0, 0x555fc5c41d00, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
406 | IRMemoryMap::ReadMemory (0x7ffff7a75fc0, 0x555fc5c41d00, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
407 | IRMemoryMap::WriteMemory (0x7ffff7fca010, 0x555fc5c41d00, 0x8) went to [0x7ffff7fca010..0x7ffff7fca01f) | |
408 | Interpreted a StoreInst | |
409 | D : 0x7ffff7a75fc0 | |
410 | P : 0x7ffff7a75fe0 | |
411 | R : 0x7ffff7fca010 | |
412 | Interpreting br label %init.end | |
413 | Interpreted a BrInst with no condition | |
414 | Interpreting ret void | |
415 | -- [UserExpression::FinalizeJITExecution] Dematerializing after execution -- | |
416 | Materializer::Dematerialize (frame_sp = 0x7f718c380640, process_address = 0x7ffff7fca000) about to dematerialize: | |
417 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5cdca40, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
418 | IRMemoryMap::ReadMemory (0x7ffff7fca010, 0x555fc5cdca40, 0x8) came from [0x7ffff7fca010..0x7ffff7fca01f) | |
419 | 0x7ffff7fca000: EntityResultVariable | |
420 | Pointer: | |
421 | 0x7ffff7fca000: 10 a0 fc f7 ff 7f 00 00 | |
422 | Temporary allocation: | |
423 | 0x7ffff7fca000: a8 40 00 00 00 00 00 00 | |
424 | ||
425 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5cdca40, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
426 | IRMemoryMap::ReadMemory (0x7ffff7fca010, 0x7f71c8052ad0, 0x8) came from [0x7ffff7fca010..0x7ffff7fca01f) | |
427 | IRMemoryMap::Free (0x7ffff7fca010) freed [0x7ffff7fca010..0x7ffff7fca01f) | |
428 | == [UserExpression::Evaluate] Execution completed normally with result 0x00000000000040a8 == | |
429 | IRMemoryMap::Free (0x7ffff79f6000) freed [0x7ffff79f6000..0x7ffff7a76007) | |
430 | IRMemoryMap::Free (0x7ffff7fca000) freed [0x7ffff7fca000..0x7ffff7fca00f) | |
431 | (int *) $0 = 0x00000000000040a8 | |
432 | (lldb) p (int*)100 + (long long)(&Foo::Bar) | |
433 | == [UserExpression::Evaluate] Parsing expression (int*)100 + (long long)(&Foo::Bar) == | |
434 | ClangUserExpression::ScanContext() | |
435 | Parsing the following code: | |
436 | #line 1 "<lldb wrapper prefix>" | |
437 | #ifndef offsetof | |
438 | #define offsetof(t, d) __builtin_offsetof(t, d) | |
439 | #endif | |
440 | #ifndef NULL | |
441 | #define NULL (__null) | |
442 | #endif | |
443 | #ifndef Nil | |
444 | #define Nil (__null) | |
445 | #endif | |
446 | #ifndef nil | |
447 | #define nil (__null) | |
448 | #endif | |
449 | #ifndef YES | |
450 | #define YES ((BOOL)1) | |
451 | #endif | |
452 | #ifndef NO | |
453 | #define NO ((BOOL)0) | |
454 | #endif | |
455 | typedef __INT8_TYPE__ int8_t; | |
456 | typedef __UINT8_TYPE__ uint8_t; | |
457 | typedef __INT16_TYPE__ int16_t; | |
458 | typedef __UINT16_TYPE__ uint16_t; | |
459 | typedef __INT32_TYPE__ int32_t; | |
460 | typedef __UINT32_TYPE__ uint32_t; | |
461 | typedef __INT64_TYPE__ int64_t; | |
462 | typedef __UINT64_TYPE__ uint64_t; | |
463 | typedef __INTPTR_TYPE__ intptr_t; | |
464 | typedef __UINTPTR_TYPE__ uintptr_t; | |
465 | typedef __SIZE_TYPE__ size_t; | |
466 | typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
467 | typedef unsigned short unichar; | |
468 | extern "C" | |
469 | { | |
470 | int printf(const char * __restrict, ...); | |
471 | } | |
472 | ||
473 | ||
474 | ||
475 | typedef signed char BOOL; | |
476 | ||
477 | ||
478 | void | |
479 | $__lldb_expr(void *$__lldb_arg) | |
480 | { | |
481 | ; | |
482 | #line 1 "<user expression 1>" | |
483 | (int*)100 + (long long)(&Foo::Bar) | |
484 | ; | |
485 | #line 1 "<lldb wrapper suffix>" | |
486 | } | |
487 | ||
488 | Frame has language of type c++14 | |
489 | Using x86_64-unknown-linux-gnu as the target triple | |
490 | Using SIMD alignment: 128 | |
491 | Target datalayout string: 'e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128' | |
492 | Target ABI: '' | |
493 | Target vector alignment: 0 | |
494 | TransformTopLevelDecl(int8_t) | |
495 | TransformTopLevelDecl(uint8_t) | |
496 | TransformTopLevelDecl(int16_t) | |
497 | TransformTopLevelDecl(uint16_t) | |
498 | TransformTopLevelDecl(int32_t) | |
499 | TransformTopLevelDecl(uint32_t) | |
500 | TransformTopLevelDecl(int64_t) | |
501 | TransformTopLevelDecl(uint64_t) | |
502 | TransformTopLevelDecl(intptr_t) | |
503 | TransformTopLevelDecl(uintptr_t) | |
504 | TransformTopLevelDecl(size_t) | |
505 | TransformTopLevelDecl(ptrdiff_t) | |
506 | TransformTopLevelDecl(unichar) | |
507 | TransformTopLevelDecl(printf) | |
508 | TransformTopLevelDecl(BOOL) | |
509 | ClangExpressionDeclMap::FindExternalVisibleDecls for '$__lldb_arg' in a 'TranslationUnit' | |
510 | CEDM::FEVD Searching the root namespace | |
511 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD5F40 'Expression ASTContext for '<user expression 1>'' for '$__lldb_arg' in a 'TranslationUnit' | |
512 | CAS::FEVD Searching the root namespace | |
513 | ClangExpressionDeclMap::FindExternalVisibleDecls for '$__lldb_expr' in a 'TranslationUnit' | |
514 | CEDM::FEVD Searching the root namespace | |
515 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD5F40 'Expression ASTContext for '<user expression 1>'' for '$__lldb_expr' in a 'TranslationUnit' | |
516 | CAS::FEVD Searching the root namespace | |
517 | ClangExpressionDeclMap::FindExternalVisibleDecls for 'Foo' in a 'TranslationUnit' | |
518 | CEDM::FEVD Searching the root namespace | |
519 | ClangASTSource::FindExternalVisibleDecls on (ASTContext*)0x0000555FC5FD5F40 'Expression ASTContext for '<user expression 1>'' for 'Foo' in a 'TranslationUnit' | |
520 | CAS::FEVD Searching the root namespace | |
521 | CAS::FEVD Matching type found for "Foo": Foo | |
522 | [ClangASTImporter] Imported (CXXRecordDecl*)0x0000555FC600D1B8, named Foo (from (Decl*)0x0000555FC5DE1268), metadata 61 | |
523 | [ClangASTImporter] Decl has no origin information in (ASTContext*)0x0000555FC5DD45E0 | |
524 | [ClangASTImporter] To is a TagDecl - attributes Lexical [complete->complete] | |
525 | FindExternalLexicalDecls on (ASTContext*)0x0000555FC5FD5F40 'Expression ASTContext for '<user expression 1>'' in 'Foo' (%sDecl*)CXXRecord | |
526 | FELD Original decl 0x0000555FC5DD45E0 (Decl*)0x0000555fc5de1268: | |
527 | CXXRecordDecl 0x555fc5de1268 <<invalid sloc>> <invalid sloc> struct Foo definition | |
528 | |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init | |
529 | | |-DefaultConstructor exists trivial constexpr needs_implicit defaulted_is_constexpr | |
530 | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param | |
531 | | |-MoveConstructor exists simple trivial needs_implicit | |
532 | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param | |
533 | | |-MoveAssignment exists simple trivial needs_implicit | |
534 | | `-Destructor simple irrelevant trivial needs_implicit | |
535 | `-VarDecl 0x555fc5de13a0 <<invalid sloc>> <invalid sloc> Bar 'int' static | |
536 | ||
537 | FELD Adding [to CXXRecordDecl Foo] lexical VarDecl VarDecl 0x555fc5de13a0 <<invalid sloc>> <invalid sloc> Bar 'int' static | |
538 | ||
539 | [ClangASTImporter] Imported (VarDecl*)0x0000555FC600D308, named Bar (from (Decl*)0x0000555FC5DE13A0), metadata 18446744073709551615 | |
540 | [ClangASTImporter] Decl has no origin information in (ASTContext*)0x0000555FC5DD45E0 | |
541 | TransformTopLevelDecl($__lldb_expr) | |
542 | Untransformed function AST: | |
543 | void $__lldb_expr(void *$__lldb_arg) { | |
544 | ; | |
545 | (int *)100 + (long long)(&Foo::Bar); | |
546 | } | |
547 | ||
548 | Last statement is an rvalue with type: int * | |
549 | Transformed function AST: | |
550 | void $__lldb_expr(void *$__lldb_arg) { | |
551 | ; | |
552 | static int *$__lldb_expr_result(int *)100 + (long long)(&Foo::Bar); | |
553 | } | |
554 | ||
555 | Found function _Z12$__lldb_exprPv for $__lldb_expr | |
556 | PrepareForExecution - Current expression language is c++14 | |
557 | ||
558 | Module as passed in to IRForTarget: | |
559 | "; ModuleID = '$__lldb_module' | |
560 | source_filename = "$__lldb_module" | |
561 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
562 | target triple = "x86_64-unknown-linux-gnu" | |
563 | ||
564 | @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8 | |
565 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
566 | @_ZN3Foo3BarE = external global i32, align 4 | |
567 | ||
568 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
569 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
570 | entry: | |
571 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !6 | |
572 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
573 | %0 = load i8, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
574 | %guard.uninitialized = icmp eq i8 %0, 0 | |
575 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !7 | |
576 | ||
577 | init.check: ; preds = %entry | |
578 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result", align 8 | |
579 | store i8 1, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
580 | br label %init.end | |
581 | ||
582 | init.end: ; preds = %init.check, %entry | |
583 | ret void | |
584 | } | |
585 | ||
586 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
587 | ||
588 | !clang.global.decl.ptrs = !{!0, !1, !0, !2} | |
589 | !llvm.module.flags = !{!3, !4} | |
590 | !llvm.ident = !{!5} | |
591 | ||
592 | !0 = !{i32** @"_ZZ12$__lldb_exprPvE19$__lldb_expr_result", i64 93869831910512} | |
593 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832196200} | |
594 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832196872} | |
595 | !3 = !{i32 1, !"wchar_size", i32 4} | |
596 | !4 = !{i32 7, !"frame-pointer", i32 2} | |
597 | !5 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
598 | !6 = !{i64 93869832195976} | |
599 | !7 = !{!"branch_weights", i32 1, i32 1048575} | |
600 | " | |
601 | Result name: "_ZZ12$__lldb_exprPvE19$__lldb_expr_result" | |
602 | Found result in the IR: "@"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8" | |
603 | Found result decl: "static int *$__lldb_expr_result(int *)100 + (long long)(&Foo::Bar)" | |
604 | Result decl type: "int *" | |
605 | Creating a new result global: "$RESULT_NAME" with size 8 | |
606 | Replacing "@"_ZZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i32* null, align 8" with "@"$RESULT_NAME" = external global i32*" | |
607 | [ClangASTImporter] DeportType called on (int *Type*)0x0000555FC600D150 from (ASTContext*)0x0000555FC5FD5F40 to (ASTContext*)0x0000555FC5F58FA0 | |
608 | Module after creating the result variable: | |
609 | "; ModuleID = '$__lldb_module' | |
610 | source_filename = "$__lldb_module" | |
611 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
612 | target triple = "x86_64-unknown-linux-gnu" | |
613 | ||
614 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
615 | @_ZN3Foo3BarE = external global i32, align 4 | |
616 | @reloc_placeholder = internal global i8 0 | |
617 | @"$RESULT_NAME" = external global i32* | |
618 | ||
619 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
620 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
621 | entry: | |
622 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
623 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
624 | %0 = load i8, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
625 | %guard.uninitialized = icmp eq i8 %0, 0 | |
626 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
627 | ||
628 | init.check: ; preds = %entry | |
629 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** @"$RESULT_NAME", align 8 | |
630 | store i8 1, i8* @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result", align 1 | |
631 | br label %init.end | |
632 | ||
633 | init.end: ; preds = %init.check, %entry | |
634 | ret void | |
635 | } | |
636 | ||
637 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
638 | ||
639 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
640 | !llvm.module.flags = !{!4, !5} | |
641 | !llvm.ident = !{!6} | |
642 | ||
643 | !0 = distinct !{i32** @"$RESULT_NAME", i64 93869831910512} | |
644 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832196200} | |
645 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832196872} | |
646 | !3 = !{i32** @"$RESULT_NAME", i64 93869831910512} | |
647 | !4 = !{i32 1, !"wchar_size", i32 4} | |
648 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
649 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
650 | !7 = !{i64 93869832195976} | |
651 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
652 | " | |
653 | Examining _ZGVZ12$__lldb_exprPvE19$__lldb_expr_result, DeclForGlobalValue returns 0x0000000000000000 | |
654 | Examining _ZN3Foo3BarE, DeclForGlobalValue returns 0x0000555FC600D308 | |
655 | MaybeHandleVariable (@_ZN3Foo3BarE = external global i32, align 4) | |
656 | Type of "Bar" is [clang "int", llvm "i32*"] [size 4, align 4] | |
657 | Examining reloc_placeholder, DeclForGlobalValue returns 0x0000000000000000 | |
658 | Examining $RESULT_NAME, DeclForGlobalValue returns 0x0000555FC5FC7470 | |
659 | MaybeHandleVariable (@"$RESULT_NAME" = external global i32*) | |
660 | Type of "$__lldb_expr_result" is [clang "int **", llvm "i32***"] [size 8, align 8] | |
661 | Adding value for (NamedDecl*)0x0000555FC5FC7470 [$__lldb_expr_result - $RESULT_NAME] to the structure | |
662 | Already placed at 0x0 | |
663 | Placed at 0x0 | |
664 | Element arrangement: | |
665 | Arg: "i8* %"$__lldb_arg"" | |
666 | "$RESULT_NAME" ("$__lldb_expr_result") placed at 0 | |
667 | Replacing [@"$RESULT_NAME" = external global i32*] | |
668 | Total structure [align 8, size 8] | |
669 | Module after preparing for execution: | |
670 | "; ModuleID = '$__lldb_module' | |
671 | source_filename = "$__lldb_module" | |
672 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
673 | target triple = "x86_64-unknown-linux-gnu" | |
674 | ||
675 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
676 | @_ZN3Foo3BarE = external global i32, align 4 | |
677 | @reloc_placeholder = internal global i8 0 | |
678 | ||
679 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
680 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
681 | entry: | |
682 | %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
683 | %1 = bitcast i8* %0 to i32*** | |
684 | %2 = load i32**, i32*** %1, align 8 | |
685 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
686 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
687 | %guard.uninitialized = icmp eq i8 0, 0 | |
688 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
689 | ||
690 | init.check: ; preds = %entry | |
691 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
692 | br label %init.end | |
693 | ||
694 | init.end: ; preds = %init.check, %entry | |
695 | ret void | |
696 | } | |
697 | ||
698 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
699 | ||
700 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
701 | !llvm.module.flags = !{!4, !5} | |
702 | !llvm.ident = !{!6} | |
703 | ||
704 | !0 = distinct !{null, i64 93869831910512} | |
705 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832196200} | |
706 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832196872} | |
707 | !3 = distinct !{null, i64 93869831910512} | |
708 | !4 = !{i32 1, !"wchar_size", i32 4} | |
709 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
710 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
711 | !7 = !{i64 93869832195976} | |
712 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
713 | " | |
714 | [ClangASTImporter] Forgetting destination (ASTContext*)0x0000555FC5FD5F40 | |
715 | [ClangASTImporter] Forgetting source->dest (ASTContext*)0x0000555FC5FD5F40->(ASTContext*)0x0000555FC5F58FA0 | |
716 | == [UserExpression::Evaluate] Executing expression == | |
717 | IRMemoryMap::Malloc (15, 0x8, 0x3, eAllocationPolicyHostOnly) -> 0x7ffff7fca000 | |
718 | IRMemoryMap::Malloc (524295, 0x8, 0x3, eAllocationPolicyHostOnly) -> 0x7ffff79f6000 | |
719 | IRMemoryMap::Malloc process_sp=0x555fc5de9ed0, process_sp->CanJIT()=true, process_sp->IsAlive()=true | |
720 | IRMemoryMap::WriteMemory (0x7ffff7fca010, 0x555fc5cf38b0, 0x8) went to [0x7ffff7fca010..0x7ffff7fca01f) | |
721 | IRMemoryMap::Malloc (15, 0x8, 0x3, eAllocationPolicyMirror) -> 0x7ffff7fca010 | |
722 | IRMemoryMap::WriteMemory (0x7ffff7fca000, 0x7ffd03bc9ef0, 0x8) went to [0x7ffff7fca000..0x7ffff7fca00f) | |
723 | Materializer::Materialize (frame_sp = 0x7f718c380640, process_address = 0x7ffff7fca000) materialized: | |
724 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5c4ed00, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
725 | IRMemoryMap::ReadMemory (0x7ffff7fca010, 0x555fc5c4ed00, 0x8) came from [0x7ffff7fca010..0x7ffff7fca01f) | |
726 | 0x7ffff7fca000: EntityResultVariable | |
727 | Pointer: | |
728 | 0x7ffff7fca000: 10 a0 fc f7 ff 7f 00 00 | |
729 | Temporary allocation: | |
730 | 0x7ffff7fca000: 00 00 00 00 00 00 00 00 | |
731 | ||
732 | Module as passed in to IRInterpreter::Interpret: | |
733 | "; ModuleID = '$__lldb_module' | |
734 | source_filename = "$__lldb_module" | |
735 | target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
736 | target triple = "x86_64-unknown-linux-gnu" | |
737 | ||
738 | @"_ZGVZ12$__lldb_exprPvE19$__lldb_expr_result" = internal global i8 0, align 1 | |
739 | @_ZN3Foo3BarE = external global i32, align 4 | |
740 | @reloc_placeholder = internal global i8 0 | |
741 | ||
742 | ; Function Attrs: convergent mustprogress noinline nounwind optnone | |
743 | define dso_local void @"_Z12$__lldb_exprPv"(i8* noundef %"$__lldb_arg") #0 { | |
744 | entry: | |
745 | %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
746 | %1 = bitcast i8* %0 to i32*** | |
747 | %2 = load i32**, i32*** %1, align 8 | |
748 | %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
749 | store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
750 | %guard.uninitialized = icmp eq i8 0, 0 | |
751 | br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
752 | ||
753 | init.check: ; preds = %entry | |
754 | store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
755 | br label %init.end | |
756 | ||
757 | init.end: ; preds = %init.check, %entry | |
758 | ret void | |
759 | } | |
760 | ||
761 | attributes #0 = { convergent mustprogress noinline nounwind optnone "frame-pointer"="all" "min-legal-vector-width"="0" "no-builtins" "no-trapping-math"="true" "stack-protector-buffer-size"="0" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" } | |
762 | ||
763 | !clang.global.decl.ptrs = !{!0, !1, !0, !2, !3} | |
764 | !llvm.module.flags = !{!4, !5} | |
765 | !llvm.ident = !{!6} | |
766 | ||
767 | !0 = distinct !{null, i64 93869831910512} | |
768 | !1 = !{void (i8*)* @"_Z12$__lldb_exprPv", i64 93869832196200} | |
769 | !2 = !{i32* @_ZN3Foo3BarE, i64 93869832196872} | |
770 | !3 = distinct !{null, i64 93869831910512} | |
771 | !4 = !{i32 1, !"wchar_size", i32 4} | |
772 | !5 = !{i32 7, !"frame-pointer", i32 2} | |
773 | !6 = !{!"clang version 14.0.0 (https://github.com/llvm/llvm-project.git d89490db70ebc6438db507a20ac9558e822f1453)"} | |
774 | !7 = !{i64 93869832195976} | |
775 | !8 = !{!"branch_weights", i32 1, i32 1048575} | |
776 | " | |
777 | IRMemoryMap::WriteMemory (0x7ffff7a75ff8, 0x7ffd03bc9ae0, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
778 | Made an allocation for argument i8* %"$__lldb_arg" | |
779 | Data region : 7ffff7fca000 | |
780 | Ref region : 7ffff7a75ff8 | |
781 | Interpreting %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 | |
782 | IRMemoryMap::WriteMemory (0x7ffff7a75ff0, 0x555fc5c35270, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
783 | Interpreted a GetElementPtrInst | |
784 | P : i8* %"$__lldb_arg" 0x7ffff7a75ff8 | |
785 | Poffset : %0 = getelementptr i8, i8* %"$__lldb_arg", i32 0 0x7ffff7a75ff0 | |
786 | Interpreting %1 = bitcast i8* %0 to i32*** | |
787 | IRMemoryMap::WriteMemory (0x7ffff7a75fe8, 0x555fc5c35270, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
788 | Interpreting %2 = load i32**, i32*** %1, align 8 | |
789 | IRMemoryMap::ReadMemory (0x7ffff7a75fe8, 0x555fc5c35270, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
790 | IRMemoryMap::ReadMemory (0x7ffff7fca000, 0x555fc5c35270, 0x8) came from [0x7ffff7fca000..0x7ffff7fca00f) | |
791 | IRMemoryMap::WriteMemory (0x7ffff7a75fe0, 0x555fc5c35270, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
792 | Interpreted a LoadInst | |
793 | P : 0x7ffff7a75fe8 | |
794 | R : 0x7ffff7fca000 | |
795 | D : 0x7ffff7a75fe0 | |
796 | Interpreting %"$__lldb_arg.addr" = alloca i8*, align 8, !clang.decl.ptr !7 | |
797 | IRMemoryMap::WriteMemory (0x7ffff7a75fd0, 0x7ffd03bc9ae0, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
798 | Interpreted an AllocaInst | |
799 | R : 0x7ffff7a75fd8 | |
800 | P : 0x7ffff7a75fd0 | |
801 | Interpreting store i8* %"$__lldb_arg", i8** %"$__lldb_arg.addr", align 8 | |
802 | IRMemoryMap::ReadMemory (0x7ffff7a75fd0, 0x555fc5d569b0, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
803 | IRMemoryMap::ReadMemory (0x7ffff7a75ff8, 0x555fc5d569b0, 0x8) came from [0x7ffff79f6000..0x7ffff7a76007) | |
804 | IRMemoryMap::WriteMemory (0x7ffff7a75fd8, 0x555fc5d569b0, 0x8) went to [0x7ffff79f6000..0x7ffff7a76007) | |
805 | Interpreted a StoreInst | |
806 | D : 0x7ffff7a75ff8 | |
807 | P : 0x7ffff7a75fd0 | |
808 | R : 0x7ffff7a75fd8 | |
809 | Interpreting %guard.uninitialized = icmp eq i8 0, 0 | |
810 | IRMemoryMap::WriteMemory (0x7ffff7a75fcf, 0x555fc5d569b0, 0x1) went to [0x7ffff79f6000..0x7ffff7a76007) | |
811 | Interpreted an ICmpInst | |
812 | L : i8 0 | |
813 | R : i8 0 | |
814 | = : %guard.uninitialized = icmp eq i8 0, 0 0x7ffff7a75fcf | |
815 | Interpreting br i1 %guard.uninitialized, label %init.check, label %init.end, !prof !8 | |
816 | Interpreted a BrInst with a condition | |
817 | cond : %guard.uninitialized = icmp eq i8 0, 0 0x7ffff7a75fcf | |
818 | Interpreting store i32* getelementptr inbounds (i32, i32* inttoptr (i64 100 to i32*), i64 ptrtoint (i32* @_ZN3Foo3BarE to i64)), i32** %2, align 8 | |
819 | PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace. | |
820 | Stack dump: | |
821 | 0. Program arguments: /home/werat/git/llvm-project/build_x64_optdebug/bin/lldb a.out | |
822 | #0 0x0000555fc564219d llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) /home/werat/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:569:3 | |
823 | #1 0x0000555fc56406e4 llvm::sys::RunSignalHandlers() (.localalias) /home/werat/git/llvm-project/llvm/lib/Support/Signals.cpp:97:20 | |
824 | #2 0x0000555fc564085e SignalHandler(int) /home/werat/git/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1 | |
825 | #3 0x00007f71da1ce8e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x138e0) | |
826 | #4 0x00007f71d6c85300 llvm::APInt::getSExtValue() const /home/werat/git/llvm-project/llvm/include/llvm/ADT/APInt.h:1478:29 | |
827 | #5 0x00007f71d6c85300 llvm::ConstantInt::getSExtValue() const /home/werat/git/llvm-project/llvm/include/llvm/IR/Constants.h:148:64 | |
828 | #6 0x00007f71d6c85300 llvm::DataLayout::getIndexedOffsetInType(llvm::Type*, llvm::ArrayRef<llvm::Value*>) const /home/werat/git/llvm-project/llvm/lib/IR/DataLayout.cpp:896:66 | |
829 | #7 0x00007f71d4ff7b66 InterpreterStackFrame::ResolveConstantValue(llvm::APInt&, llvm::Constant const*) /home/werat/git/llvm-project/lldb/source/Expression/IRInterpreter.cpp:290:51 | |
830 | #8 0x00007f71d4ff837a InterpreterStackFrame::ResolveConstant(unsigned long, llvm::Constant const*) /home/werat/git/llvm-project/lldb/source/Expression/IRInterpreter.cpp:345:30 | |
831 | #9 0x00007f71d4ff8732 InterpreterStackFrame::ResolveValue(llvm::Value const*, llvm::Module&) (.isra.0) /home/werat/git/llvm-project/lldb/source/Expression/IRInterpreter.cpp:422:7 | |
832 | #10 0x00007f71d4ffa827 IRInterpreter::Interpret(llvm::Module&, llvm::Function&, llvm::ArrayRef<unsigned long>, lldb_private::IRExecutionUnit&, lldb_private::Status&, unsigned long, unsigned long, lldb_private::ExecutionContext&) /home/werat/git/llvm-project/lldb/source/Expression/IRInterpreter.cpp:1277:42 | |
833 | #11 0x00007f71d4fffec1 lldb_private::LLVMUserExpression::DoExecute(lldb_private::DiagnosticManager&, lldb_private::ExecutionContext&, lldb_private::EvaluateExpressionOptions const&, std::shared_ptr<lldb_private::UserExpression>&, std::shared_ptr<lldb_private::ExpressionVariable>&) (.localalias) /home/werat/git/llvm-project/lldb/source/Expression/LLVMUserExpression.cpp:123:35 | |
834 | #12 0x00007f71d3423591 lldb_private::UserExpression::Execute(lldb_private::DiagnosticManager&, lldb_private::ExecutionContext&, lldb_private::EvaluateExpressionOptions const&, std::shared_ptr<lldb_private::UserExpression>&, std::shared_ptr<lldb_private::ExpressionVariable>&) (.localalias) /home/werat/git/llvm-project/lldb/source/Expression/UserExpression.cpp:401:40 | |
835 | #13 0x00007f71d342459d lldb_private::UserExpression::Evaluate(lldb_private::ExecutionContext&, lldb_private::EvaluateExpressionOptions const&, llvm::StringRef, llvm::StringRef, std::shared_ptr<lldb_private::ValueObject>&, lldb_private::Status&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, lldb_private::ValueObject*) /home/werat/git/llvm-project/lldb/source/Expression/UserExpression.cpp:346:38 | |
836 | #14 0x00007f71d35501aa lldb_private::Target::EvaluateExpression(llvm::StringRef, lldb_private::ExecutionContextScope*, std::shared_ptr<lldb_private::ValueObject>&, lldb_private::EvaluateExpressionOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, lldb_private::ValueObject*) /home/werat/git/llvm-project/lldb/source/Target/Target.cpp:2432:12 | |
837 | #15 0x00007f71d4e78001 lldb_private::CommandObjectExpression::EvaluateExpression(llvm::StringRef, lldb_private::Stream&, lldb_private::Stream&, lldb_private::CommandReturnObject&) (.localalias) /home/werat/git/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:423:35 | |
838 | #16 0x00007f71d4e7912f lldb_private::CommandObjectExpression::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&) (.localalias) /home/werat/git/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:645:25 | |
839 | #17 0x00007f71d345e3d7 lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&) (.localalias) /home/werat/git/llvm-project/lldb/source/Interpreter/CommandObject.cpp:1017:26 | |
840 | #18 0x00007f71d345b037 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data() const /usr/include/c++/10/bits/basic_string.h:195:28 | |
841 | #19 0x00007f71d345b037 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_is_local() const /usr/include/c++/10/bits/basic_string.h:230:23 | |
842 | #20 0x00007f71d345b037 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose() /usr/include/c++/10/bits/basic_string.h:239:18 | |
843 | #21 0x00007f71d345b037 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /usr/include/c++/10/bits/basic_string.h:671:19 | |
844 | #22 0x00007f71d345b037 lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&) (.localalias) /home/werat/git/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:1957:17 | |
845 | #23 0x00007f71d345b47f lldb_private::CommandInterpreter::IOHandlerInputComplete(lldb_private::IOHandler&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) /home/werat/git/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:3024:24 | |
846 | #24 0x00007f71d3395431 lldb_private::IOHandlerEditline::Run() (.localalias) /home/werat/git/llvm-project/lldb/source/Core/IOHandler.cpp:576:44 | |
847 | #25 0x00007f71d3372561 __gthread_mutex_lock /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:748:3 | |
848 | #26 0x00007f71d3372561 __gthread_recursive_mutex_lock /usr/include/x86_64-linux-gnu/c++/10/bits/gthr-default.h:811:31 | |
849 | #27 0x00007f71d3372561 std::recursive_mutex::lock() /usr/include/c++/10/mutex:106:47 | |
850 | #28 0x00007f71d3372561 std::lock_guard<std::recursive_mutex>::lock_guard(std::recursive_mutex&) /usr/include/c++/10/bits/std_mutex.h:159:23 | |
851 | #29 0x00007f71d3372561 lldb_private::Debugger::RunIOHandlers() (.localalias) /home/werat/git/llvm-project/lldb/source/Core/Debugger.cpp:880:41 | |
852 | #30 0x00007f71d344ca10 lldb_private::CommandInterpreterRunOptions::DefaultToYes(lldb_private::LazyBool) /home/werat/git/llvm-project/lldb/include/lldb/Interpreter/CommandInterpreter.h:196:5 | |
853 | #31 0x00007f71d344ca10 lldb_private::CommandInterpreterRunOptions::GetAutoHandleEvents() const /home/werat/git/llvm-project/lldb/include/lldb/Interpreter/CommandInterpreter.h:170:24 | |
854 | #32 0x00007f71d344ca10 lldb_private::CommandInterpreter::RunCommandInterpreter(lldb_private::CommandInterpreterRunOptions&) /home/werat/git/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:3269:36 | |
855 | #33 0x00007f71d303296c lldb::SBDebugger::RunCommandInterpreter(bool, bool) (.localalias) /home/werat/git/llvm-project/lldb/source/API/SBDebugger.cpp:1203:3 | |
856 | #34 0x0000555fc5629d1f reset_stdin_termios /home/werat/git/llvm-project/lldb/tools/driver/Driver.cpp:102:3 | |
857 | #35 0x0000555fc5629d1f Driver::MainLoop() (.localalias) /home/werat/git/llvm-project/lldb/tools/driver/Driver.cpp:681:22 | |
858 | #36 0x0000555fc562889e main /home/werat/git/llvm-project/lldb/tools/driver/Driver.cpp:945:34 | |
859 | #37 0x00007f71d1ed0e4a __libc_start_main ./csu/../csu/libc-start.c:314:16 | |
860 | #38 0x0000555fc562894a _start (/home/werat/git/llvm-project/build_x64_optdebug/bin/lldb+0x894a) | |
861 | [1] 514649 segmentation fault LLVM_SYMBOLIZER_PATH=llvm-symbolizer-11 a.out | |
862 |