From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5328 invoked by alias); 28 Jun 2011 14:44:37 -0000 Received: (qmail 5319 invoked by uid 22791); 28 Jun 2011 14:44:36 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 28 Jun 2011 14:44:22 +0000 Received: by vxg38 with SMTP id 38so269035vxg.0 for ; Tue, 28 Jun 2011 07:44:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.45.211 with SMTP id g19mr2605940vcf.271.1309272261900; Tue, 28 Jun 2011 07:44:21 -0700 (PDT) Received: by 10.220.32.5 with HTTP; Tue, 28 Jun 2011 07:44:21 -0700 (PDT) In-Reply-To: <20110628143014.GD7255@1n450.cable.virginmedia.net> References: <20110627125306.GA30646@doriath.ww600.siemens.net> <20110627132735.GE16103@n2100.arm.linux.org.uk> <4E088DE1.2060809@gmail.com> <4E089AB3.1090801@codesourcery.com> <20110628103946.GC21898@n2100.arm.linux.org.uk> <20110628142045.GC7255@1n450.cable.virginmedia.net> <20110628143014.GD7255@1n450.cable.virginmedia.net> Date: Tue, 28 Jun 2011 14:44:00 -0000 Message-ID: Subject: Re: Problem with GDB when debugging IRQ handlers From: Dmitry Eremin-Solenikov To: Catalin Marinas Cc: Russell King - ARM Linux , Yao Qi , Eric Miao , linux-arm-kernel@lists.infradead.org, gdb@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2011-06/txt/msg00161.txt.bz2 On 6/28/11, Catalin Marinas wrote: > On Tue, Jun 28, 2011 at 03:20:45PM +0100, Catalin Marinas wrote: >> On Tue, Jun 28, 2011 at 04:06:11PM +0400, Dmitry Eremin-Solenikov wrote: >> > On 6/28/11, Russell King - ARM Linux wrote: >> > I did some checks. It seems, the problem isn't related to unwinder. At >> > least >> > it looks like kernel has all necessary unwinding subops. It looks like >> > the >> > problem is really related to the lack of necessary .cfi information. At >> > least >> > when i added .cfi_startproc/.cfi_endproc annotations to entry-armv.S >> > code, >> > gdb stopped decoding backtrace with the "previous frame identical to >> > this frame" >> > error. Unfortunately I don't have enough knowledge to add .cfi >> > annotations to >> > irq handlers. >> >> I think it may have stopped decoding because of some information it >> reads from the stack doesn't look sane. But I wonder whether we could >> get it looping again depending on the register values in the interrupted >> context. >> >> > diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S >> > index e8d8856..d77f9d7 100644 >> > --- a/arch/arm/kernel/entry-armv.S >> > +++ b/arch/arm/kernel/entry-armv.S >> > @@ -28,6 +28,7 @@ >> > #include "entry-header.S" >> > #include >> > >> > + .cfi_sections .debug_frame >> > /* >> > * Interrupt handling. Preserves r7, r8, r9 >> > */ >> > @@ -113,6 +114,7 @@ ENDPROC(__und_invalid) >> > >> > .macro svc_entry, stack_hole=0 >> > UNWIND(.fnstart ) >> > + .cfi_startproc >> > UNWIND(.save {r0 - pc} ) >> > sub sp, sp, #(S_FRAME_SIZE + \stack_hole - 4) >> >> Could you add some directives like below in the svc_entry macro (after >> "sub sp...", not sure if it matters) and check whether gdb behaves >> better: >> >> .cfi_def_cfa_offset S_PC >> .cfi_offset 14, -4 > > Actually since the return address is in S_PC (which maybe gdb assumes it > would be the saved LR), this is probably not be correct. After SVC > entry, we have he following structure on the stack: > > ORIG_r0 > CPSR > <--- assuming this is the Call Frame Address (SP+S_PC+4) > PC <--- CFA - 4 > LR <--- don't care > SP <--- CFA - 12 > ... > > > So we tell gdb about this with something like below (untested): > > .cfi_def_cfa_offset S_PC + 4 > .cfi_offset 14, -4 > .cfi_offset 13, -12 This brings "unknown CFA rule" gdb exception, but it seems I got your idea. -- With best wishes Dmitry