Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Benjamin Herrenschmidt
On Wed, 2007-10-17 at 12:58 +0930, Alan Modra wrote: > On Tue, Oct 16, 2007 at 08:21:55PM +0200, Jakub Jelinek wrote: > > On Tue, Oct 16, 2007 at 06:02:13PM +0100, Andrew Haley wrote: > > > The reason is that the unwinder data for CR in the vDSO is wrong. The > > > line that affects the CR is her

Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Alan Modra
On Tue, Oct 16, 2007 at 08:21:55PM +0200, Jakub Jelinek wrote: > On Tue, Oct 16, 2007 at 06:02:13PM +0100, Andrew Haley wrote: > > The reason is that the unwinder data for CR in the vDSO is wrong. The > > line that affects the CR is here in My fault. > According to __builtin_init_dwarf_reg_size_

Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Andrew Haley
Jakub Jelinek writes: > On Tue, Oct 16, 2007 at 07:22:31PM +0100, Andrew Haley wrote: > > > and similarly linux-unwind.h should do: > > > > > > fs->regs.reg[R_CR2].loc.offset = (long) ®s->ccr - new_cfa; > > > /* CR? regs are just 32-bit and PPC is big-endian. */ > > > fs->r

Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Jakub Jelinek
On Tue, Oct 16, 2007 at 07:22:31PM +0100, Andrew Haley wrote: > > and similarly linux-unwind.h should do: > > > > fs->regs.reg[R_CR2].loc.offset = (long) ®s->ccr - new_cfa; > > /* CR? regs are just 32-bit and PPC is big-endian. */ > > fs->regs.reg[R_CR2].loc.offset += sizeof (lon

Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Andrew Haley
Jakub Jelinek writes: > On Tue, Oct 16, 2007 at 06:02:13PM +0100, Andrew Haley wrote: > > The reason is that the unwinder data for CR in the vDSO is wrong. The > > line that affects the CR is here in > > According to __builtin_init_dwarf_reg_size_table on ppc64-linux > r0..r31, fp0..fp31, m

Re: Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Jakub Jelinek
On Tue, Oct 16, 2007 at 06:02:13PM +0100, Andrew Haley wrote: > The reason is that the unwinder data for CR in the vDSO is wrong. The > line that affects the CR is here in According to __builtin_init_dwarf_reg_size_table on ppc64-linux r0..r31, fp0..fp31, mq, lr, ctr, ap, vrsave, vscr, spe_acc, s

Bad unwinder data for __kernel_sigtramp_rt64 in PPC 64 vDSO corrupts Condition Register

2007-10-16 Thread Andrew Haley
The symptom is that if you segfault and then throw an exception in the segfault handler call-saved fields in the Condition Register are corrupted. The reason is that the unwinder data for CR in the vDSO is wrong. The line that affects the CR is here in arch/powerpc/kernel/vdso64/sigtramp.S: rs