https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108996
--- Comment #4 from Ulrich Weigand <uweigand at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #3) > What is done on other arches? That depends on the platform ABI. On some arches, including x86/x86_64 and arm/aarch64, the ABI requires the generated code reloads the return buffer pointer into a defined register at function exit (either the same it was in on function entry, or some other ABI-defined register). On those arches, GDB can at least inspect the return value at the point the function return happens. On a few arches, in particular SPARC and RISC-V, the ABI even guarantees that the return buffer pointer register remains valid throughout execution of the function, so that GDB can inspect and/or modify the return value at any point. But on most other arches, including s390x and ppc/ppc64, the ABI does not guarantee anything, so GDB simply cannot access the function return value at all (after the point the return buffer pointer register is no longer needed by generated code and the register has been reused). However, *if* the debug info contains an entry-value record for that register at the call site in the current caller, then the return buffer can be accessed at any time, on all arches. Given that in this specific case, most callers will actually just point the return buffer register to a local stack buffer (i.e. set the register to "stack pointer plus some constant"), generating an entry-value record for these special cases should actually be quite straightforward for the compiler, without requiring a lot of value-tracking machinery.