> > In fact, the PA-RISC and Itanium calling conventions specifically require
> > this.
>
> Not all ABIs do this. Many allow the end of one function to be
> immediately followed by the start of the next function.
We're talking about the narrow case of a function that ends with a
no-return call.
On 12/06/2018 12:47 PM, Cary Coutant via Dwarf-Discuss wrote:
Another perfectly good solution is for the compiler to assure that the return
PC is always in the
right scope to begin with. All it takes is to include a (never executed) NOP
following any non-returning
CALL at the last address of th
> Another perfectly good solution is for the compiler to assure that the return
> PC is always in the
> right scope to begin with. All it takes is to include a (never executed) NOP
> following any non-returning
> CALL at the last address of the routine.Such calls are not common, plus many
> envi
Comments are inline...
On Thu, Dec 6, 2018 at 7:40 AM David Stenberg via Dwarf-Discuss <
dwarf-discuss@lists.dwarfstd.org> wrote:
> Hi!
>
> When GDB and LLDB perform virtual unwinding, they subtract one byte
> from the return addresses of the outer frames. This is for example
> necessary when unw
On 12/06/2018 04:40 AM, David Stenberg via Dwarf-Discuss wrote:
Hi!
When GDB and LLDB perform virtual unwinding, they subtract one byte
from the return addresses of the outer frames. This is for example
necessary when unwinding from a non-returning call that is placed last
in the function, as th
On tor, 2018-12-06 at 16:32 +0100, Andreas Arnez via Dwarf-Discuss
wrote:
> If GDB uses caller-saved register values from the inner-most frame in
> outer frames, then this is a bug. Note that this could also be
> caused
> by bad CFI.
Hmm, right. I'm not very familiar with the design philosophy of
On Thu, Dec 06 2018, David Stenberg via Dwarf-Discuss wrote:
> [...] variables in outer frames using such location list entries will
> incorrectly be evaluated using the inner-most frame's register values
> when debugging in GDB.
If GDB uses caller-saved register values from the inner-most frame
Hi!
When GDB and LLDB perform virtual unwinding, they subtract one byte
from the return addresses of the outer frames. This is for example
necessary when unwinding from a non-returning call that is placed last
in the function, as the return address then can point to a different
function. I assume