1#exe {
2--name storage
3-Mroot=storage.zig
4#}
5
6#write storage.zig {
7comptime {
8 _ = @import("externs.zig");
9}
10const global_const: u64 = 0x19e50dc8d6002077;
11var global_var: u64 = 0xcc423cec08622e32;
12threadlocal var global_threadlocal1: u64 = 0xb4d643528c042121;
13threadlocal var global_threadlocal2: u64 = 0x43faea1cf5ad7a22;
14extern const extern_const: u64;
15extern var extern_var: u64;
16extern threadlocal var extern_threadlocal1: u64;
17extern threadlocal var extern_threadlocal2: u64;
18fn testStorage(
19 param1: u64,
20 param2: u64,
21 param3: u64,
22 param4: u64,
23 param5: u64,
24 param6: u64,
25 param7: u64,
26 param8: u64,
27) callconv(.c) void {
28 const local_comptime_val: u64 = global_const *% global_const;
29 const local_comptime_ptr: struct { u64 } = .{ local_comptime_val *% local_comptime_val };
30 const local_const: u64 = global_var ^ global_threadlocal1 ^ global_threadlocal2 ^
31 extern_const ^ extern_var ^ extern_threadlocal1 ^ extern_threadlocal2 ^
32 param1 ^ param2 ^ param3 ^ param4 ^ param5 ^ param6 ^ param7 ^ param8;
33 var local_var: u64 = local_comptime_ptr[0] ^ local_const;
34 local_var = local_var;
35}
36pub fn main() void {
37 testStorage(
38 0x6a607e08125c7e00,
39 0x98944cb2a45a8b51,
40 0xa320cf10601ee6fb,
41 0x691ed3535bad3274,
42 0x63690e6867a5799f,
43 0x8e163f0ec76067f2,
44 0xf9a252c455fb4c06,
45 0xc88533722601e481,
46 );
47}
48#}
49#write externs.zig {
50export const extern_const: u64 = 0x1b0c91ea0470b0b2;
51export var extern_var: u64 = 0x19bc17b3f0b61ebc;
52export threadlocal var extern_threadlocal1: u64 = 0x3034c4ce967ed64d;
53export threadlocal var extern_threadlocal2: u64 = 0xfd330ab00b4bc5eb;
54#}
55#update
56#check lldb {
57(lldb) breakpoint set --file storage.zig --source-pattern-regexp 'local_var = local_var;'
58Breakpoint 1: where = storage`storage.testStorage + #... at storage.zig:28:5, address = 0x#...
59(lldb) process launch
60Process #... launched: '#.../storage' (#...)
61Process #... stopped
62* thread #1, name = 'storage', stop reason = breakpoint 1.1
63 frame #0: storage`storage.testStorage(param1=7665265138917473792, param2=10994496920463510353, param3=11754622696676058875, param4=7574723978257576564, param5=7163272523887770015, param6=10238440135580477426, param7=17988030864880782342, param8=14449011544845051009) at storage.zig:28:5
64(lldb) target variable --show-types --format hex -- global_const global_var global_threadlocal1 global_threadlocal2 extern_const extern_var extern_threadlocal1 extern_threadlocal2
65(u64) global_const = 0x19e50dc8d6002077
66(u64) global_var = 0xcc423cec08622e32
67(u64) global_threadlocal1 = 0xb4d643528c042121
68(u64) global_threadlocal2 = 0x43faea1cf5ad7a22
69(u64) extern_const = 0x1b0c91ea0470b0b2
70(u64) extern_var = 0x19bc17b3f0b61ebc
71(u64) extern_threadlocal1 = 0x3034c4ce967ed64d
72(u64) extern_threadlocal2 = 0xfd330ab00b4bc5eb
73(lldb) frame variable --show-all-children --show-types --format hex -- param1 param2 param3 param4 param5 param6 param7 param8 local_comptime_val 'local_comptime_ptr.@"0"' local_comptime_ptr[0] local_const local_var
74(u64) param1 = 0x6a607e08125c7e00
75(u64) param2 = 0x98944cb2a45a8b51
76(u64) param3 = 0xa320cf10601ee6fb
77(u64) param4 = 0x691ed3535bad3274
78(u64) param5 = 0x63690e6867a5799f
79(u64) param6 = 0x8e163f0ec76067f2
80(u64) param7 = 0xf9a252c455fb4c06
81(u64) param8 = 0xc88533722601e481
82(u64) local_comptime_val = 0x69490636f81df751
83(u64) local_comptime_ptr.@"0" = 0x82e834dae74767a1
84(u64) local_comptime_ptr[0] = 0x82e834dae74767a1
85(u64) local_const = 0x104ba3ac46b25fad
86(u64) local_var = 0x92a39776a1f5380c
87(lldb) breakpoint delete --force 1
881 breakpoints deleted; 0 breakpoint locations disabled.
89#}