Re: [RS6000] asynch exceptions and unwind info

2011-08-01 Thread Alan Modra
On Fri, Jul 29, 2011 at 10:28:28PM +0930, Alan Modra wrote: > libgcc/ > * config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>): > Restore for indirect call bcrtl from correct stack slot, and only > if cfa+40 isn't valid. > gcc/ > * config/rs6000/rs6000-protos.h

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread Alan Modra
On Fri, Jul 29, 2011 at 09:16:09AM -0400, David Edelsohn wrote: > Which has the problem? Which are you trying to solve? And how is > your change solving it? Michael's save_toc_in_prologue emit_frame_save writes unwind info for the wrong frame. That r2 save is the current r2. What we need is in

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread David Edelsohn
On Thu, Jul 28, 2011 at 9:27 PM, Alan Modra wrote: > Right, but I was talking about the normal case, where the unwinder > won't even look at .glink unwind info. > >> The whole problem is that toc pointer copy in 40(1) is only valid >> during indirect call sequences, and iff ld inserted a stub?  I

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread Alan Modra
On Fri, Jul 29, 2011 at 10:57:48AM +0930, Alan Modra wrote: > Except that any info about r2 in an indirect call sequence really > belongs to the *called* function frame, not the callee. I woke up > this morning with the realization that what I'd done in > frob_update_context for indirect call sequ

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Thu, Jul 28, 2011 at 12:09:51PM -0700, Richard Henderson wrote: > Well, even if we're not able to hoist the R2 store, we may be able > to simply add REG_CFA_OFFSET and REG_CFA_RESTORE notes to the insns > in the stream. You'd need to mark every non-local call with something that says R2 may be

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Thu, Jul 28, 2011 at 11:49:16AM -0700, Richard Henderson wrote: > On 07/28/2011 12:27 AM, Alan Modra wrote: > > On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: > >> Ideally what I'd like to > >> do is have ld and gcc emit accurate r2 tracking unwind info and > >> dispense with hacks

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Richard Henderson
On 07/28/2011 12:02 PM, David Edelsohn wrote: > The other problem is hoisting the store into the prologue is not > always profitable for performance. It should be better once shrink > wrapping is implemented. Currently the PPC ABI may perform a lot of > stores in the prologue if the function *may

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread David Edelsohn
On Thu, Jul 28, 2011 at 2:49 PM, Richard Henderson wrote: > The whole problem is that toc pointer copy in 40(1) is only valid > during indirect call sequences, and iff ld inserted a stub?  I.e. > direct calls between functions that share toc pointers never save > the copy? > > Would it make sense

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Richard Henderson
On 07/28/2011 12:27 AM, Alan Modra wrote: > On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: >> Ideally what I'd like to >> do is have ld and gcc emit accurate r2 tracking unwind info and >> dispense with hacks like frob_update_context. If ld did emit accurate >> unwind info for .glink,

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: > Ideally what I'd like to > do is have ld and gcc emit accurate r2 tracking unwind info and > dispense with hacks like frob_update_context. If ld did emit accurate > unwind info for .glink, then the justification for frob_update_context

Re: [RS6000] asynch exceptions and unwind info

2011-07-27 Thread David Edelsohn
On Wed, Jul 27, 2011 at 1:30 AM, Alan Modra wrote: >        * config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>): >        Leave r2 REG_UNSAVED if stopped on the instruction that saves r2 >        in a plt call stub.  Do restore r2 if stopped on bctrl. Okay. Thanks, David

[RS6000] asynch exceptions and unwind info

2011-07-26 Thread Alan Modra
Hi David, I've been looking into what we need to do to support unwinding from async signal handlers. I've implemented unwind info generation for .glink in the linker, but to keep the ppc64 .glink unwind info simple I've assumed that frob_update_context is still used. We still have some difficul