https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38534

--- Comment #34 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Best effort are the whatever@entry values, that is used if an argument is no
longer used across the function call and isn't stored in any call saved
register or stack slot.
There can be also automatic variables which are live across the call (note,
even if you have noreturn function lower in the call stack, its caller e.g.
could just call the noreturn function conditionally or could be from a
different translation unit in which the callee is not declared noreturn, and
any caller up in the call stack then won't have noreturn calls).
If you have
  int x = fn1 (...);
  fn2 (...); // This function conditionally calls a noreturn function
  fn3 (x);
then typically x will be in callee saved register (unless we run out of them),
it isn't best effort in there, the debug info just says that say x lives in
%ebx register,
it doesn't say it might be in that register.
Now, when you up from the noreturn function to this frame, gdb won't be able to
restore the register (if .cfi_undefined is emitted), or right now just can have
completely bogus values.

Reply via email to