From patchwork Fri Aug 26 09:01:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 14945 Received: (qmail 3505 invoked by alias); 26 Aug 2016 09:02:05 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 3463 invoked by uid 89); 26 Aug 2016 09:02:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=pc_regnum, Hx-languages-length:4527 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 26 Aug 2016 09:01:54 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3CC517DD06; Fri, 26 Aug 2016 09:01:53 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-116-34.ams2.redhat.com [10.36.116.34]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u7Q91n00015363 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 26 Aug 2016 05:01:51 -0400 Date: Fri, 26 Aug 2016 11:01:48 +0200 From: Jan Kratochvil To: Andreas Arnez Cc: gdb-patches@sourceware.org, Pedro Alves Subject: Re: [PATCH] xtensa: Avoid designated inits, for C++ compliance Message-ID: <20160826090148.GA27461@host1.jankratochvil.net> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.2 (2016-07-01) X-IsSubscribed: yes On Thu, 25 Aug 2016 13:56:25 +0200, Andreas Arnez wrote: > C++ does not officially support designators in initializer lists. I could miss something about the transition to C++ but C++ was not intended to make the sources worse, it should improve the sources. The checked in change makes the source apparently more error prone to future changes. Why not the attached? Besides that is only one step; the ctor should be constexpr I guess, but that is C++11 again. I have noticed now the C++ conversion does not seem to be complete to me - struct gdbarch_tdep is defined differently for different translation units, this violates: https://en.wikipedia.org/wiki/One_Definition_Rule Jan diff --git a/gdb/xtensa-config.c b/gdb/xtensa-config.c index 0773eda..99da40f 100644 --- a/gdb/xtensa-config.c +++ b/gdb/xtensa-config.c @@ -215,7 +215,54 @@ xtensa_register_t rmap[] = -#ifdef XTENSA_CONFIG_INSTANTIATE -XTENSA_CONFIG_INSTANTIATE(rmap,0) -#endif - +class XtensaTdep:public gdbarch_tdep { +public: + XtensaTdep() { + target_flags = 0; + spill_location = -1; + spill_size = 0; + unused = 0; + call_abi = (XSHAL_ABI == XTHAL_ABI_CALL0 + ? CallAbiCall0Only + : CallAbiDefault); + debug_interrupt_level = XCHAL_DEBUGLEVEL; + icache_line_bytes = XCHAL_ICACHE_LINESIZE; + dcache_line_bytes = XCHAL_DCACHE_LINESIZE; + dcache_writeback = XCHAL_DCACHE_IS_WRITEBACK; + isa_use_windowed_registers = (XSHAL_ABI != XTHAL_ABI_CALL0); + isa_use_density_instructions = XCHAL_HAVE_DENSITY; + isa_use_exceptions = XCHAL_HAVE_EXCEPTIONS; + isa_use_ext_l32r = XSHAL_USE_ABSOLUTE_LITERALS; + isa_max_insn_size = XCHAL_MAX_INSTRUCTION_SIZE; + debug_num_ibreaks = XCHAL_NUM_IBREAK; + debug_num_dbreaks = XCHAL_NUM_DBREAK; + regmap = rmap; + num_regs = 0; + num_nopriv_regs = 0; + num_pseudo_regs = 0; + num_aregs = XCHAL_NUM_AREGS; + num_contexts = XCHAL_NUM_CONTEXTS; + ar_base = -1; + a0_base = -1; + wb_regnum = -1; + ws_regnum = -1; + pc_regnum = -1; + ps_regnum = -1; + lbeg_regnum = -1; + lend_regnum = -1; + lcount_regnum = -1; + sar_regnum = -1; + litbase_regnum = -1; + interrupt_regnum = -1; + interrupt2_regnum = -1; + cpenable_regnum = -1; + debugcause_regnum = -1; + exccause_regnum = -1; + excvaddr_regnum = -1; + max_register_raw_size = 0; + max_register_virtual_size = 0; + fp_layout = 0; + fp_layout_bytes = 0; + gregmap = 0; + } +} xtensa_tdep; diff --git a/gdb/xtensa-tdep.h b/gdb/xtensa-tdep.h index c83e312..1ddfb73 100644 --- a/gdb/xtensa-tdep.h +++ b/gdb/xtensa-tdep.h @@ -222,61 +222,6 @@ struct gdbarch_tdep struct ctype_cache *type_entries; }; -/* Macro to instantiate a gdbarch_tdep structure. */ - -#define XTENSA_GDBARCH_TDEP_INSTANTIATE(rmap,spillsz) \ - { \ - 0, /* target_flags */ \ - -1, /* spill_location */ \ - (spillsz), /* spill_size */ \ - 0, /* unused */ \ - (XSHAL_ABI == XTHAL_ABI_CALL0 \ - ? CallAbiCall0Only \ - : CallAbiDefault), /* call_abi */ \ - XCHAL_DEBUGLEVEL, /* debug_interrupt_level */ \ - XCHAL_ICACHE_LINESIZE, /* icache_line_bytes */ \ - XCHAL_DCACHE_LINESIZE, /* dcache_line_bytes */ \ - XCHAL_DCACHE_IS_WRITEBACK, /* dcache_writeback */ \ - (XSHAL_ABI != XTHAL_ABI_CALL0), /* isa_use_windowed_registers */ \ - XCHAL_HAVE_DENSITY, /* isa_use_density_instructions */ \ - XCHAL_HAVE_EXCEPTIONS, /* isa_use_exceptions */ \ - XSHAL_USE_ABSOLUTE_LITERALS, /* isa_use_ext_l32r */ \ - XCHAL_MAX_INSTRUCTION_SIZE, /* isa_max_insn_size */ \ - XCHAL_NUM_IBREAK, /* debug_num_ibreaks */ \ - XCHAL_NUM_DBREAK, /* debug_num_dbreaks */ \ - rmap, /* regmap */ \ - 0, /* num_regs */ \ - 0, /* num_nopriv_regs */ \ - 0, /* num_pseudo_regs */ \ - XCHAL_NUM_AREGS, /* num_aregs */ \ - XCHAL_NUM_CONTEXTS, /* num_contexts */ \ - -1, /* ar_base */ \ - -1, /* a0_base */ \ - -1, /* wb_regnum */ \ - -1, /* ws_regnum */ \ - -1, /* pc_regnum */ \ - -1, /* ps_regnum */ \ - -1, /* lbeg_regnum */ \ - -1, /* lend_regnum */ \ - -1, /* lcount_regnum */ \ - -1, /* sar_regnum */ \ - -1, /* litbase_regnum */ \ - -1, /* interrupt_regnum */ \ - -1, /* interrupt2_regnum */ \ - -1, /* cpenable_regnum */ \ - -1, /* debugcause_regnum */ \ - -1, /* exccause_regnum */ \ - -1, /* excvaddr_regnum */ \ - 0, /* max_register_raw_size */ \ - 0, /* max_register_virtual_size */ \ - 0, /* fp_layout */ \ - 0, /* fp_layout_bytes */ \ - 0, /* gregmap */ \ - } -#define XTENSA_CONFIG_INSTANTIATE(rmap,spill_size) \ - struct gdbarch_tdep xtensa_tdep = \ - XTENSA_GDBARCH_TDEP_INSTANTIATE(rmap,spill_size); - #ifndef XCHAL_NUM_CONTEXTS #define XCHAL_NUM_CONTEXTS 0 #endif