From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6141 invoked by alias); 28 Feb 2002 22:38:16 -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 5981 invoked from network); 28 Feb 2002 22:38:06 -0000 Received: from unknown (HELO cygnus.com) (205.180.230.5) by sources.redhat.com with SMTP; 28 Feb 2002 22:38:06 -0000 Received: from redhat.com (notinuse.cygnus.com [205.180.231.12]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id OAA03197; Thu, 28 Feb 2002 14:37:59 -0800 (PST) Message-ID: <3C7EAF35.6029CBD3@redhat.com> Date: Thu, 28 Feb 2002 14:38:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.2-2smp i686) X-Accept-Language: en MIME-Version: 1.0 To: Stefan Heinzmann CC: gdb@sources.redhat.com Subject: Re: Porting GDB to a new target processor architecture -- what's involved? References: <000901c1bf78$0e2b3d20$a49afea9@athlon600> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-02/txt/msg00328.txt.bz2 Stefan Heinzmann wrote: > > Hello, > > a potential customer wants me to port GDB to a new processor architecture (a > 32-bit RISC processor) used in embedded systems. As I'm unfamiliar with the > GDB internals, I have difficulties estimating the time needed to do this. > What do I need to know? Has anyone got a reading list? No reading list, sorry. Maybe someday someone who is doing a first-time port will write up the experience. You? I usually start by adding a couple of lines to configure.tgt to set up my new target (there are plenty of examples to look at). Then I'll create a subdirectory under gdb/config for my target, and populate it with empty or minimal file fragments patterned after existing ones (best to pick a recent port as a template). Finally you'll create a *-tdep.c file which will implement your target methods. One way to start, again, is to begin with a copy of another recent port's tdep file and strip out all the code (bodies of the functions), rename the functions to correspond to your target, and then start filling in the details. I know I'm making this sound easier than it actually is... > The GCC (2.95.3) and binutils apparently have been ported already. To which > extent can I reuse code from those? I remember having read somewhere that > gas and gdb use common target definition files, is that true? Not really, but they share the bfd and opcodes libraries, which will take care of (respectively) reading object files and disassembling. > The GDB internals document is quite helpful, but it appears to be incomplete > (stack frame interpretation, compiler characteristics). Is there additional > information available (other than the source code itself)? Yeah, it's always been incomplete, and no there isn't much else (other than the source code, the changelogs, and the newsgroups.) > How does the development process work assuming that the new target is > contributed back to the community? Do I have to follow the most up-to-date > CVS tree closely or is it more useful to work "off-line"? Best to stay current. Your eventual submission will have to be a clean diff against the current tree. > Is it reasonable to assume that the general gdb code can be used unchanged > and only a few target-specific files need to be provided, Yes. > or is it common > that such a porting effort brings up issues with gdb in general (or even > with a graphical frontend) that will have to be addressed, too? Not too common (knock on wood). If it seems to you that you can't do what you want to without changing the rest of gdb, you should try looking at it from a different angle first. Best of luck, Michael