Commit 0f56d7afe2

Alex Rønne Petersen <alex@alexrp.com>
2025-10-03 03:24:21
std.debug: use correct return address offset for s390x
Makes FP-based unwinding work.
1 parent 91fa2c6
Changed files (1)
lib
lib/std/debug.zig
@@ -952,6 +952,9 @@ const StackIterator = union(enum) {
     /// Offset of the saved return address wrt the frame pointer.
     const ra_offset = off: {
         if (native_arch == .powerpc64le) break :off 2 * @sizeOf(usize);
+        // On s390x, r14 is the link register and we need to grab it from its customary slot in the
+        // register save area (ELF ABI s390x Supplement §1.2.2.2).
+        if (native_arch == .s390x) break :off 14 * @sizeOf(usize);
         break :off @sizeOf(usize);
     };