Advertisement
werat

LLDB crash on expression evaluation

Nov 9th, 2021
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement