From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22398 invoked by alias); 7 Sep 2004 12:55:57 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 22369 invoked from network); 7 Sep 2004 12:55:56 -0000 Received: from unknown (HELO web61203.mail.yahoo.com) (216.155.196.127) by sourceware.org with SMTP; 7 Sep 2004 12:55:56 -0000 Message-ID: <20040907125555.56455.qmail@web61203.mail.yahoo.com> Received: from [81.80.165.125] by web61203.mail.yahoo.com via HTTP; Tue, 07 Sep 2004 05:55:55 PDT Date: Tue, 07 Sep 2004 12:55:00 -0000 From: Thierry Subject: Re: GDB 6.2 for ARM: bug in backtrace when in Thumb mode To: Richard Earnshaw Cc: gdb@sources.redhat.com In-Reply-To: <1094560059.8831.9.camel@pc960.cambridge.arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-09/txt/msg00051.txt.bz2 No, indeed, it wasn't (I'm working with gcc 3.4). I'll wait for gcc 3.5, then! Thank you Richard. --- Richard Earnshaw wrote: > On Tue, 2004-09-07 at 13:02, Thierry wrote: > > Hi there, > > > > I'm trying to debug an application compiled for the > > ARM in Thumb mode. The 'backtrace' command seems buggy > > as soon as there are more than 4 levels in the stack. > > Besides, with the same code compiled in ARM mode, it > > works perfectly. > > > > Here's an example: > > > > void dummy2(int a) > > { > > int b; > > b = a; > > } > > > > void dummy1(void) > > { > > dummy2(4); > > } > > > > void dummy(void) > > { > > dummy1(); > > } > > > > In my 'main', I call 'dummy()'. > > > > When I go step-by-step until I step into 'dummy2', the > > 'bt' command gives the following result: > > #0 dummy2 (a=4) at MainModule/src/dummy.c:4 > > #1 0xc000039c in dummy1 () at > > MainModule/src/dummy.c:9 > > #2 0x00000000 in ?? () > > > > which is wrong! > > > > The files have been compiled with arm-elf-gcc with the > > following options: > > -ggdb -gdwarf-2 -c -mapcs -fomit-frame-pointer -mthumb > > -mthumb-interwork -mlong-calls > > -fsigned-char -mstructure-size-boundary=8 > > -fshort-enums > > > > When I remove the option '-fomit-frame-pointer', it > > works. > > > > Any idea? > > > > Most (all?) Released versions of gcc don't generate unwind information > for Thumb functions, so the unwinder gets confused if there's no frame > pointer. > > It will be fixed in gcc-3.5, but I don't think it was fixed in time for > gcc-3.4. > > R. > __________________________________ Do you Yahoo!? Take Yahoo! Mail with you! Get it on your mobile phone. http://mobile.yahoo.com/maildemo