From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 61DF5386F45A for ; Wed, 22 Jul 2020 13:49:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 61DF5386F45A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=simark.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=simark@simark.ca Received: from [10.0.0.11] (173-246-6-90.qc.cable.ebox.net [173.246.6.90]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 8695F1E794; Wed, 22 Jul 2020 09:49:51 -0400 (EDT) Subject: Re: [PATCH v3 1/3] arc: Add ARCv2 XML target along with refactoring To: Shahab Vahedi Cc: gdb-patches@sourceware.org, Shahab Vahedi , Tom Tromey , Anton Kolesov , Francois Bedard References: <20200428160437.1585-1-shahab.vahedi@gmail.com> <20200713154527.13430-1-shahab.vahedi@gmail.com> <20200713154527.13430-2-shahab.vahedi@gmail.com> <422b0905-456f-8722-b74d-97ade4a95c58@simark.ca> <20200715203500.GA4811@gmail.com> <20200722133641.GB10630@gmail.com> From: Simon Marchi Message-ID: <0731a886-0896-0776-11a9-94f44810eb75@simark.ca> Date: Wed, 22 Jul 2020 09:49:48 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200722133641.GB10630@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3.8 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2020 13:49:53 -0000 On 2020-07-22 9:36 a.m., Shahab Vahedi wrote: > On Thu, Jul 16, 2020 at 09:28:50AM -0400, Simon Marchi wrote: >> On 2020-07-15 4:35 p.m., Shahab Vahedi wrote: >> When I search for `arc_gdbarch_features_init` in that patch I don't find anything... > > You're correct. I have it in my local branch. The patch that uses it is going > to be submitted very soon. I hope you don't mind if it remains like this. Let's just make it static in this patch, and make in non-static again in your future patch, it's not a big change. >> The code in GDB constructing an arc_gdbarch_features will use the BFD to determine >> these two values, whereas the code in GDBserver will use something else (usually >> looking at the current process' properties). >> >> In fact, the constructor is optional, you could just build a arc_gdbarch_features >> using aggregate initialization and return it from that function: >> >> arc_gdbarch_features features {reg_size, isa}; >> >> It doesn't really matter. I just happen to prefer the constructor method, because >> that makes it so you can't "forget" a field and it ensures it can never be in an >> uninitialized state. > > I see now. Actually, I have usecases to not initialize it immediately, > but in a few lines of code. I'd be curious to see. Because instead of declaring it immediately, you can keep the fields separate until you initialize it: int reg_size; enum arc_isa isa; if (something) { reg_size = 8; isa = foo; } else { reg_size = 4; isa = bar; } arc_gdbarch_features features (reg_size, isa); I think this is good, because the day you add a third axis to arc_gdbarch_features, that code will not build and you'll be forced to updated it (you can't forget it). Whereas with: arc_gdbarch_features features; if (something) { features.reg_size = 8; features.isa = foo; } else { features.reg_size = 4; features.isa = bar; } It's possible to forget. But maybe you have a different use case in mind? Simon