From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13016 invoked by alias); 3 Sep 2005 01:26:21 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 12988 invoked by uid 22791); 3 Sep 2005 01:26:17 -0000 Received: from sibelius.xs4all.nl (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Sat, 03 Sep 2005 01:26:17 +0000 Received: from elgar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2]) by sibelius.xs4all.nl (8.13.4/8.13.0) with ESMTP id j831Q2hG012839; Sat, 3 Sep 2005 03:26:02 +0200 (CEST) Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by elgar.sibelius.xs4all.nl (8.13.4/8.13.3) with ESMTP id j831Q2v2010409; Sat, 3 Sep 2005 03:26:02 +0200 (CEST) Received: (from kettenis@localhost) by elgar.sibelius.xs4all.nl (8.13.4/8.13.4/Submit) id j831Q26V032052; Sat, 3 Sep 2005 03:26:02 +0200 (CEST) Date: Sat, 03 Sep 2005 01:26:00 -0000 Message-Id: <200509030126.j831Q26V032052@elgar.sibelius.xs4all.nl> From: Mark Kettenis To: kevinb@redhat.com CC: gdb-patches@sources.redhat.com, msnyder@redhat.com In-reply-to: <20050902180915.07468bb1@ironwood.lan> (message from Kevin Buettner on Fri, 2 Sep 2005 18:09:15 -0700) Subject: Re: [commit] mn10300: Register a dwarf2_reg_to_regnum function References: <20050902180915.07468bb1@ironwood.lan> X-SW-Source: 2005-09/txt/msg00018.txt.bz2 > Date: Fri, 2 Sep 2005 18:09:15 -0700 > From: Kevin Buettner > > This code used to be in the old version of mn10300-tdep.c. It's absence > from the current version of mn10300-tdep.c is an oversight. When I asked > Michael Snyder about it a while back, he asked me to reinstate it. So > here it is... > > * mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): New function. > (mn10300_gdbarch_init): Register mn10300_dwarf2_reg_to_regnum(). > > Index: mn10300-tdep.c > =================================================================== > RCS file: /cvs/src/src/gdb/mn10300-tdep.c,v > retrieving revision 1.128 > diff -u -p -r1.128 mn10300-tdep.c > --- mn10300-tdep.c 3 Sep 2005 00:49:06 -0000 1.128 > +++ mn10300-tdep.c 3 Sep 2005 01:02:48 -0000 > @@ -937,6 +937,37 @@ mn10300_push_dummy_call (struct gdbarch > return sp; > } > > +/* If DWARF2 is a register number appearing in Dwarf2 debug info, then > + mn10300_dwarf2_reg_to_regnum (DWARF2) is the corresponding GDB > + register number. Why don't Dwarf2 and GDB use the same numbering? > + Who knows? But since people have object files lying around with > + the existing Dwarf2 numbering, and other people have written stubs > + to work with the existing GDB, neither of them can change. So we > + just have to cope. */ > +static int > +mn10300_dwarf2_reg_to_regnum (int dwarf2) > +{ > + /* This table is supposed to be shaped like the REGISTER_NAMES > + initializer in gcc/config/mn10300/mn10300.h. Registers which > + appear in GCC's numbering, but have no counterpart in GDB's > + world, are marked with a -1. */ > + static int dwarf2_to_gdb[] = { > + 0, 1, 2, 3, 4, 5, 6, 7, -1, 8, > + 15, 16, 17, 18, 19, 20, 21, 22, > + 32, 33, 34, 35, 36, 37, 38, 39, > + 40, 41, 42, 43, 44, 45, 46, 47, > + 48, 49, 50, 51, 52, 53, 54, 55, > + 56, 57, 58, 59, 60, 61, 62, 63 > + }; > + > + if (dwarf2 < 0 > + || dwarf2 >= (sizeof (dwarf2_to_gdb) / sizeof (dwarf2_to_gdb[0])) > + || dwarf2_to_gdb[dwarf2] == -1) > + internal_error (__FILE__, __LINE__, > + "bogus register number in debug info: %d", dwarf2); > + > + return dwarf2_to_gdb[dwarf2]; > +} Could you use ARRAY_SIZE here? And that string should be i18n'd. or perhaps it's better to use gdb_assert(); saves the translators some work ;-). Hmm, isn't an internal error actually inappropriate here? The condition could be triggered by bogus debug info, couldn't it? That should be handled more graceful. Mark