Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Cary Coutant via Dwarf-Discuss
> > 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.

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Michael Eager via Dwarf-Discuss
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

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Cary Coutant via Dwarf-Discuss
> 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

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Ron Brender via Dwarf-Discuss
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

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Michael Eager via Dwarf-Discuss
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

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread David Stenberg via Dwarf-Discuss
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

Re: [Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread Andreas Arnez via Dwarf-Discuss
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

[Dwarf-Discuss] Location list entries for caller-saved registers at time of call

2018-12-06 Thread David Stenberg via Dwarf-Discuss
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