From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19099 invoked by alias); 21 Apr 2008 18:19:30 -0000 Received: (qmail 19084 invoked by uid 22791); 21 Apr 2008 18:19:29 -0000 X-Spam-Check-By: sourceware.org Received: from bluesmobile.specifix.com (HELO bluesmobile.specifix.com) (216.129.118.140) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 21 Apr 2008 18:19:12 +0000 Received: from [127.0.0.1] (bluesmobile.specifix.com [216.129.118.140]) by bluesmobile.specifix.com (Postfix) with ESMTP id 1A71D3C5EA; Mon, 21 Apr 2008 11:19:11 -0700 (PDT) Subject: Re: about current_gdbarch From: Michael Snyder To: Tea Cc: Thiago Jung Bauermann , gdb-patches@sourceware.org In-Reply-To: References: Content-Type: text/plain Date: Mon, 21 Apr 2008 19:37:00 -0000 Message-Id: <1208801950.4615.97.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.10.3 (2.10.3-7.fc7) Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-04/txt/msg00440.txt.bz2 On Mon, 2008-04-21 at 17:59 +0800, Tea wrote: > Hi Thiago, > > In your mail, you want me remove the "current_gdbarch" from my patch. > But it's so hard to me. > Because most of "current_gdbarch" is used in function "record_message" > and sub-function of it(such as i386_record and mips_record). > "record_message" will be called by function "resume" that use a lot of > "current_gdbarch" in it. So I think get current gdbarch without > "current_gdbarch" is so hard. > > Could you please help me about it? Or let me keep "current_gdbarch" in > current time. Maybe I can remove it in the future. gdbarch is a data structure that's meant to be passed around as a token to the various functions that will use it. It's a relatively new interface (though it's been in place for a number of years now). "current_gdbarch" is a cheat -- a global constant -- that we have allowed ourselves to use while we transition various parts of gdb into using the gdbarch interface. I think what you are being encouraged to do is, rather than just using the global constant whenever you need it, start at highest possible level of calling into your code (eg. "record_message" in infrun.c) and pass in a pointer to current_gdbarch (assuming an actual gdbarch pointer is not available). Then let the rest of your code pass that pointer around, and use it instead of using the global. That way, eventually, we only have one reference to the global "current_gdbarch" to get rid of, instead of many. Michael