On Wed, Jun 22, 2016 at 04:31:12PM -0400, Dave Anderson wrote: > > Hi Takahiro, > > BTW, in your next patch posting, can you possibly expound upon the diagram below? > > For example, I'm presuming that 'p', 'c' and 'n' mean previous, current and next? > But I'm not sure about 'N', or what "real stackframe" or "calced" mean, and what > the 'top' marker in the IRQ stack signifies. > > Maybe you could add a sentence or two describing the 3 frame types? Sure. But please feel free to correct my descriptions as much as you want. I tried to fix the issue I mentioned last week, but I couldn't. I believe that we have no generic way to fix it unless we adopt dwarf-based unwinding. Anyway, please review my v5. Thanks, -Takahiro AKASHI > Thanks, > Dave > > > -static int > > -arm64_unwind_frame(struct bt_info *bt, struct arm64_stackframe *frame) > > +/* > > + * (1)Normal frame: > > + * +------+ > > + * | pfp | > > + * | cpc | > > + * psp + + > > + * | | > > + * | | > > + * pfp +------+ <--- :prev stackframe = <pfp, psp, ppc> > > + * | cfp | > > + * | npc | > > + * csp + + > > + * | | > > + * | | > > + * cfp +------+ <--- :curr stackframe = <cfp, csp, cpc> > > + * | nfp | | cfp = *pfp > > + * | Npc | | csp = pfp + 0x10 > > + * nsp + + real stackframe > > + * | | | at cpc > > + * | | | > > + * nfp +------+ <--- :next stackframe = <nfp, nsp, npc> > > + * | | > > + * > > + * (2)Exception: > > + * +------+ > > + * | pfp | > > + * | cpc | > > + * psp + + > > + * | | > > + * | | > > + * pfp +------+ <--- :prev stackframe = <pfp, psp, ppc> > > + * | cfp | > > + * | npc | > > + * csp + + > > + * | | > > + * | | > > + * cfp +------+ <--- :stackframe = <cfp, csp, cpc> > > + * | nfp | > > + * | epc | > > + * + + > > + * | | > > + * | | calced dummy > > + * esp +------+ <--- :exp stackframe = <---, esp, epc> > > + * | | esp = nsp - sizeof(pt_regs) > > + * | | > > + * | Npc | > > + * | nfp | > > + * | nsp | > > + * | npc | > > + * nsp + + > > + * | | calced missing > > + * nfp +------+ <--- :task stackframe = <nfp, nsp, npc> > > + * | Nfp | > > + * | NNpc | > > + * Nsp + + > > + * | | > > + * Nfp +------+ <--- :task stackframe = <Nfp, Nsp, Npc> > > + * | NNfp | > > + * > > + * (3)At interrupt: > > + * +------+ > > + * | pfp | > > + * | cpc | > > + * psp + + > > + * | | > > + * | | > > + * pfp +------+ <--- :prev stackframe = <pfp, psp, ppc> > > + * | cfp | > > + * | epc | > > + * csp + + > > + * | | > > + * | | calced dummy > > + * cfp +------+ <--- :irq stackframe = <cfp, csp, epc> > > + * | nfp | | if (cfp == IRQ_STACK_PTR) > > + * | esp | V > > + * top +------+ <---, esp, epc> > > + * IRQ stack > > + * > > + * calced dummy > > + * esp +------+ <--- :exp stackframe = <---, esp, epc> > > + * | | esp = nsp - sizeof(pt_regs) > > + * | | > > + * | Npc | > > + * | nfp | > > + * | nsp | > > + * | npc | calced missing > > + * nfp +------+ <--- :task stackframe = <nfp, nsp, npc> > > + * | Nfp | > > + * | NNpc | > > + * Nsp + + > > + * | | > > + * Nfp +------+ <--- :task stackframe = <Nfp, Nsp, Npc> > > + * | NNfp | > > + */ > > + > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility