From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2063 invoked by alias); 16 Jun 2005 22:05:34 -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 2039 invoked by uid 22791); 16 Jun 2005 22:05:29 -0000 Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Thu, 16 Jun 2005 22:05:29 +0000 Received: from drow by nevyn.them.org with local (Exim 4.51) id 1Dj2UJ-0002rQ-FV; Thu, 16 Jun 2005 18:05:27 -0400 Date: Thu, 16 Jun 2005 22:05:00 -0000 From: Daniel Jacobowitz To: Steven Johnson Cc: gdb@sources.redhat.com Subject: Re: Unwinding stack past main() when it has another name Message-ID: <20050616220527.GA9960@nevyn.them.org> Mail-Followup-To: Steven Johnson , gdb@sources.redhat.com References: <200506152247.07232.rodda@kde.org> <200506160112.58152.rodda@kde.org> <20050615163658.GA18795@nevyn.them.org> <200506161743.00708.rodda@kde.org> <20050616132242.GA5480@nevyn.them.org> <42B322E5.4080403@sakuraindustries.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <42B322E5.4080403@sakuraindustries.com> User-Agent: Mutt/1.5.8i X-SW-Source: 2005-06/txt/msg00178.txt.bz2 On Fri, Jun 17, 2005 at 08:22:13AM -1100, Steven Johnson wrote: > Daniel Jacobowitz wrote: > > >The fact that we stop at _start is a feature, so hopefully you can rely > >on that in the future. > > > >For some non-C languages we get the name of the main function from > >debug information, but for C it's always main() > > > > > This isnt always the case for embedded targets. There is no RULE that C > programs must have a main() function. It may be that most do by > convention, but they dont have to. In fact, main() can be a pain for > small embedded targets because it wants a return value and arguments, > which mean nothing for a program that isnt "launched" by a user on > demand, but the C compiler detects the special function name main() and > objects if it doesnt have the standard format. Programs dont even need > to have an entry point called _start. It all depends on how you set up > your link map. In fact you're wrong: there is a rule that C programs must have a main() function. It's in the language standard. The fact that many embedded toolchains allow you to do things differently is outside the boundaries of the language standard, and if you don't have a main() your backtraces will stop at your entry point, determined from the ELF file. GDB'll do the best it can. -- Daniel Jacobowitz CodeSourcery, LLC