================
@@ -0,0 +1,86 @@
+#include <stdlib.h>
+
+// A simple, deterministic, single-threaded nested call chain.  We stop at the
+// innermost function and walk the stack.
+//
+// The breakpoint is in the innermost frame (func_e), and that frame carries
+// locals of every kind, so that examining *just the stopped frame* already
+// exercises the various memory-read paths in one frame:
+//   - scalar locals (int / long / double)
+//   - aggregate locals (a struct and a fixed stack array)
+//   - pointer locals, including a pointer to heap memory
+//
+// The outer frames (func_d / func_c) also carry locals of these kinds, so that
+// walking the whole stack and examining every frame reads the same variety of
+// memory across several frames.
+//
+// The frame-pointer backchain is expedited at the public stop, so the 
backtrace
+// itself is packet-free; reading the *values* of these locals is not expedited
+// and must read memory from the stub.
+//
+// noinline + a real use of every value keeps every frame and local live (no
----------------
qiyao wrote:

All the `__attribute__((noinline))` are removed.

https://github.com/llvm/llvm-project/pull/205897
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to