From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 938E23858D32 for ; Tue, 26 Jul 2022 11:05:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 938E23858D32 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-605-jX50c-94PoGjrcOsIUkvHw-1; Tue, 26 Jul 2022 07:05:57 -0400 X-MC-Unique: jX50c-94PoGjrcOsIUkvHw-1 Received: by mail-wr1-f72.google.com with SMTP id o8-20020adfa108000000b0021e903fb612so734972wro.0 for ; Tue, 26 Jul 2022 04:05:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:in-reply-to:references:date :message-id:mime-version; bh=2yPlhuyOFgYTXlgvmFm4uuFLIhCu1I8GzzjS9QCbIlQ=; b=vhUdYqCsmgLIxg3CFUUhuaMr1QjzarxSziQgIWLTE/BMTEKGaOu0mHH7SfnL6GthyU mG4OcnoD/ELUWZ0F5CLbT6ONH2whqCmMjxfLT0N3xVxbX0chQG9YE+VA8+7xCSL4YFHg nguF+Zyok75ohDQKbKjfDMPchrHZbjiu0Z1yUz2Wz4bp1LLmnIxieLiok//v+UMolYcX UdjjfTmWdza/v93FN4ZtSHKxdViA6SeCDECVTo85nkBIxQK+qh/W54fQF/KbtZUpLYe0 PDrRAdzQqN+ngpOecCVPU0sU6h9L6I6zQw2n3Plqy0+wMDR+T7AFWyCKenKwaOmJK8DV 1Q4Q== X-Gm-Message-State: AJIora/m+TyWSIIzEZ+lod5Z+CzYqleKMNsTrS1QNLLI1fxHlu0FIqmP L/dYFofEmD3ZWdfPDlrzqM0Qztib4VS7Vij0UUrYoCV4ZvWNffS0RB8OD1iXgNRC7oTcCB2FSH1 Jq9hxNeOOq3oizDSn57K7/w== X-Received: by 2002:a05:6000:186b:b0:21e:63c8:b4ad with SMTP id d11-20020a056000186b00b0021e63c8b4admr10380210wri.179.1658833555061; Tue, 26 Jul 2022 04:05:55 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vE+I0SFF/2BLIJ1zbUJanil0voyrIpc2q41yLsof2c6YqCL7wDD5r7ijUlO5S6VmI6AgvvjA== X-Received: by 2002:a05:6000:186b:b0:21e:63c8:b4ad with SMTP id d11-20020a056000186b00b0021e63c8b4admr10380168wri.179.1658833554227; Tue, 26 Jul 2022 04:05:54 -0700 (PDT) Received: from localhost (15.72.115.87.dyn.plus.net. [87.115.72.15]) by smtp.gmail.com with ESMTPSA id c25-20020a7bc859000000b003a0375c4f73sm17314026wml.44.2022.07.26.04.05.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 04:05:53 -0700 (PDT) From: Andrew Burgess To: Mark Wielaard , gdb-patches@sourceware.org Subject: Re: [PATCH] Rename gdbarch_tdep template function to gdbarch_tdep_cast for g++ 4.8 In-Reply-To: <69bba9c7a09fb71b357265a0e3bc1103bb67159c.camel@klomp.org> References: <20220723000228.33276-1-mark@klomp.org> <87fsipa18p.fsf@redhat.com> <69bba9c7a09fb71b357265a0e3bc1103bb67159c.camel@klomp.org> Date: Tue, 26 Jul 2022 12:05:52 +0100 Message-ID: <87pmhs8773.fsf@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Tue, 26 Jul 2022 11:06:01 -0000 Mark Wielaard writes: > Hi Andrew, > > On Mon, 2022-07-25 at 12:19 +0100, Andrew Burgess wrote: >> Mark Wielaard writes: >> >> > commit 08106042d "gdb: move the type cast into gdbarch_tdep" created >> > a template function with the same name as a struct gdbarch_tdep. This >> > confused g++ 4.8 believing the struct gdbarch_tdep was an incomplete >> > type. Fix this by renaming the template function to gdbarch_tdep_cast. >> >> Honestly, I'm not a fan of the proposed new name. Using names that end >> in _cast should, I think, be reserved for functions that exhibit casting >> like behaviour, i.e. take an object, or pointer, and return the same >> object, or pointer, converted to some alternative type, which isn't what >> we're doing here. >> >> Instead of renaming the function, I'd like to propose that we rename the >> structure instead, so 'struct gdbarch_tdep' to 'struct >> gdbarch_tdep_base'. >> >> Given the structure is only ever used as a base class, I think the new >> name is good, and this allows the function name to be left unchanged. >> >> I tested this on a CentOS VM using g++ 4.8.5, and it seems to build >> fine. >> >> Thoughts? > > I agree with your reasoning. And now that you mention it I don't know > why I did rename the "cast" function instead of the base struct name. I > like your patch better. Thanks. I pushed the patch below, which also updates a couple of related comments. Thanks, Andrew --- commit ab25d9bbe4a04aefb47d2514b4b02e6035ff769e Author: Andrew Burgess Date: Mon Jul 25 12:07:11 2022 +0100 gdb: rename gdbarch_tdep struct to fix g++ 4.8 build After the commit: commit 08106042d9f5fdff60c129bf33190639f1a98b2a Date: Thu May 19 13:20:17 2022 +0100 gdb: move the type cast into gdbarch_tdep GDB would no longer build using g++ 4.8. The issue appears to be some confusion caused by GDB having 'struct gdbarch_tdep', but also a templated function called 'gdbarch_tdep'. Prior to the above commit the gdbarch_tdep function was not templated, and this compiled just fine. Note that the above commit compiles just fine with later versions of g++, so this issue was clearly fixed at some point, though I've not tried to track down exactly when. In this commit I propose to fix the g++ 4.8 build problem by renaming 'struct gdbarch_tdep' to 'struct gdbarch_tdep_base'. This rename better represents that the struct is only ever used as a base class, and removes the overloading of the name, which allows GDB to build with g++ 4.8. I've also updated the comment on 'struct gdbarch_tdep_base' to fix a typo, and the comment on the 'gdbarch_tdep' function, to mention that in maintainer mode a run-time type check is performed. diff --git a/gdb/aarch64-tdep.h b/gdb/aarch64-tdep.h index b85a3d33cc9..5bdd733dce3 100644 --- a/gdb/aarch64-tdep.h +++ b/gdb/aarch64-tdep.h @@ -60,7 +60,7 @@ struct regset; #define AARCH64_DISPLACED_MODIFIED_INSNS 1 /* Target-dependent structure in gdbarch. */ -struct aarch64_gdbarch_tdep : gdbarch_tdep +struct aarch64_gdbarch_tdep : gdbarch_tdep_base { /* Lowest address at which instructions will appear. */ CORE_ADDR lowest_pc = 0; diff --git a/gdb/alpha-tdep.h b/gdb/alpha-tdep.h index 420ea1adc9c..bc4a8407249 100644 --- a/gdb/alpha-tdep.h +++ b/gdb/alpha-tdep.h @@ -70,7 +70,7 @@ struct regcache; #define ALPHA_NUM_ARG_REGS 6 /* Target-dependent structure in gdbarch. */ -struct alpha_gdbarch_tdep : gdbarch_tdep +struct alpha_gdbarch_tdep : gdbarch_tdep_base { CORE_ADDR vm_min_address = 0; /* Used by alpha_heuristic_proc_start. */ diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h index 53e5d8476fc..eba435f62f0 100644 --- a/gdb/arc-tdep.h +++ b/gdb/arc-tdep.h @@ -121,7 +121,7 @@ extern bool arc_debug; /* Target-dependent information. */ -struct arc_gdbarch_tdep : gdbarch_tdep +struct arc_gdbarch_tdep : gdbarch_tdep_base { /* Offset to PC value in jump buffer. If this is negative, longjmp support will be disabled. */ diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index 360b8d694be..4e55b2797b9 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -1200,7 +1200,7 @@ gdbarch_free (struct gdbarch *arch) /* See gdbarch.h. */ -struct gdbarch_tdep * +struct gdbarch_tdep_base * gdbarch_tdep_1 (struct gdbarch *gdbarch) { if (gdbarch_debug >= 2) diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index 0fc4774a20c..67dd1151da4 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -87,7 +87,7 @@ enum struct_return }; /* Target-dependent structure in gdbarch. */ -struct arm_gdbarch_tdep : gdbarch_tdep +struct arm_gdbarch_tdep : gdbarch_tdep_base { /* The ABI for this architecture. It should never be set to ARM_ABI_AUTO. */ diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c index 4722f7ee748..357f5bb8f2d 100644 --- a/gdb/avr-tdep.c +++ b/gdb/avr-tdep.c @@ -189,7 +189,7 @@ struct avr_unwind_cache trad_frame_saved_reg *saved_regs; }; -struct avr_gdbarch_tdep : gdbarch_tdep +struct avr_gdbarch_tdep : gdbarch_tdep_base { /* Number of bytes stored to the stack by call instructions. 2 bytes for avr1-5 and avrxmega1-5, 3 bytes for avr6 and avrxmega6-7. */ diff --git a/gdb/bfin-tdep.h b/gdb/bfin-tdep.h index b7e3b9b327c..267149684e0 100644 --- a/gdb/bfin-tdep.h +++ b/gdb/bfin-tdep.h @@ -96,7 +96,7 @@ enum bfin_abi }; /* Target-dependent structure in gdbarch. */ -struct bfin_gdbarch_tdep : gdbarch_tdep +struct bfin_gdbarch_tdep : gdbarch_tdep_base { /* Which ABI is in use? */ enum bfin_abi bfin_abi {}; diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c index 09030cf8fa1..a5df478063c 100644 --- a/gdb/bpf-tdep.c +++ b/gdb/bpf-tdep.c @@ -58,7 +58,7 @@ enum bpf_regnum #define BPF_NUM_REGS (BPF_PC_REGNUM + 1) /* Target-dependent structure in gdbarch. */ -struct bpf_gdbarch_tdep : gdbarch_tdep +struct bpf_gdbarch_tdep : gdbarch_tdep_base { }; diff --git a/gdb/cris-tdep.h b/gdb/cris-tdep.h index 0b1801afa04..981515a4e9f 100644 --- a/gdb/cris-tdep.h +++ b/gdb/cris-tdep.h @@ -26,7 +26,7 @@ #include "gdbarch.h" /* CRIS architecture specific information. */ -struct cris_gdbarch_tdep : gdbarch_tdep +struct cris_gdbarch_tdep : gdbarch_tdep_base { unsigned int cris_version = 0; const char *cris_mode = nullptr; diff --git a/gdb/csky-tdep.h b/gdb/csky-tdep.h index 4cfc0a5d086..54000ab8287 100644 --- a/gdb/csky-tdep.h +++ b/gdb/csky-tdep.h @@ -31,7 +31,7 @@ enum lr_type_t }; /* Target-dependent structure in gdbarch. */ -struct csky_gdbarch_tdep : gdbarch_tdep +struct csky_gdbarch_tdep : gdbarch_tdep_base { /* Save FPU, VDSP ABI. */ unsigned int fpu_abi; diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c index 34f437764a9..55a6cfd9618 100644 --- a/gdb/frv-tdep.c +++ b/gdb/frv-tdep.c @@ -68,7 +68,7 @@ struct frv_unwind_cache /* was struct frame_extra_info */ of structures, each of which gives all the necessary info for one register. Don't stick parallel arrays in here --- that's so Fortran. */ -struct frv_gdbarch_tdep : gdbarch_tdep +struct frv_gdbarch_tdep : gdbarch_tdep_base { /* Which ABI is in use? */ enum frv_abi frv_abi {}; diff --git a/gdb/ft32-tdep.h b/gdb/ft32-tdep.h index e66a417198e..e9befaba9d4 100644 --- a/gdb/ft32-tdep.h +++ b/gdb/ft32-tdep.h @@ -22,7 +22,7 @@ #include "gdbarch.h" -struct ft32_gdbarch_tdep : gdbarch_tdep +struct ft32_gdbarch_tdep : gdbarch_tdep_base { /* Type for a pointer to a function. Used for the type of PC. */ struct type *pc_type = nullptr; diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 5d14aec1455..d4ea5d33c9c 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -43,7 +43,7 @@ struct gdbarch const struct target_desc * target_desc; /* target specific vector. */ - struct gdbarch_tdep *tdep; + struct gdbarch_tdep_base *tdep; gdbarch_dump_tdep_ftype *dump_tdep; /* per-architecture data-pointers. */ @@ -258,7 +258,7 @@ struct gdbarch struct gdbarch * gdbarch_alloc (const struct gdbarch_info *info, - struct gdbarch_tdep *tdep) + struct gdbarch_tdep_base *tdep) { struct gdbarch *gdbarch; diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 16c73915c64..324958469a7 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -61,11 +61,11 @@ struct inferior; /* The base class for every architecture's tdep sub-class. The virtual destructor ensures the class has RTTI information, which allows - gdb::checked_static_cast to be used, the gdbarch_tdep the function. */ + gdb::checked_static_cast to be used in the gdbarch_tdep function. */ -struct gdbarch_tdep +struct gdbarch_tdep_base { - virtual ~gdbarch_tdep() = default; + virtual ~gdbarch_tdep_base() = default; }; /* The architecture associated with the inferior through the @@ -151,20 +151,23 @@ using read_core_file_mappings_loop_ftype = #include "gdbarch-gen.h" /* An internal function that should _only_ be called from gdbarch_tdep. - Returns the gdbarch_tdep field held within GDBARCH. */ + Returns the gdbarch_tdep_base field held within GDBARCH. */ -extern struct gdbarch_tdep *gdbarch_tdep_1 (struct gdbarch *gdbarch); +extern struct gdbarch_tdep_base *gdbarch_tdep_1 (struct gdbarch *gdbarch); -/* Return the gdbarch_tdep object held within GDBARCH cast to the type - TDepType, which should be a sub-class of gdbarch_tdep. There is no - checking done that the gdbarch_tdep within GDBARCH actually is of the - type TDepType, we just assume the caller knows what they are doing. */ +/* Return the gdbarch_tdep_base object held within GDBARCH cast to the type + TDepType, which should be a sub-class of gdbarch_tdep_base. + + When GDB is compiled in maintainer mode a run-time check is performed + that the gdbarch_tdep_base within GDBARCH really is of type TDepType. + When GDB is compiled in release mode the run-time check is not + performed, and we assume the caller knows what they are doing. */ template static inline TDepType * gdbarch_tdep (struct gdbarch *gdbarch) { - struct gdbarch_tdep *tdep = gdbarch_tdep_1 (gdbarch); + struct gdbarch_tdep_base *tdep = gdbarch_tdep_1 (gdbarch); return gdb::checked_static_cast (tdep); } @@ -293,7 +296,7 @@ extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *ar parameters. set_gdbarch_*() functions are called to complete the initialization of the object. */ -extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep); +extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep_base *tdep); /* Helper function. Free a partially-constructed ``struct gdbarch''. diff --git a/gdb/gdbarch.py b/gdb/gdbarch.py index 8956a9c38aa..bb08081af5a 100755 --- a/gdb/gdbarch.py +++ b/gdb/gdbarch.py @@ -267,7 +267,7 @@ with open("gdbarch.c", "w") as f: print(f" {c.type} {c.name};", file=f) print(file=f) print(" /* target specific vector. */", file=f) - print(" struct gdbarch_tdep *tdep;", file=f) + print(" struct gdbarch_tdep_base *tdep;", file=f) print(" gdbarch_dump_tdep_ftype *dump_tdep;", file=f) print(file=f) print(" /* per-architecture data-pointers. */", file=f) @@ -290,7 +290,7 @@ with open("gdbarch.c", "w") as f: print(file=f) print("struct gdbarch *", file=f) print("gdbarch_alloc (const struct gdbarch_info *info,", file=f) - print(" struct gdbarch_tdep *tdep)", file=f) + print(" struct gdbarch_tdep_base *tdep)", file=f) print("{", file=f) print(" struct gdbarch *gdbarch;", file=f) print("", file=f) diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h index f1e24a272c4..c2c9e0e0b5e 100644 --- a/gdb/hppa-tdep.h +++ b/gdb/hppa-tdep.h @@ -84,7 +84,7 @@ enum hppa_regnum #define HPPA_INSN_SIZE 4 /* Target-dependent structure in gdbarch. */ -struct hppa_gdbarch_tdep : gdbarch_tdep +struct hppa_gdbarch_tdep : gdbarch_tdep_base { /* The number of bytes in an address. For now, this field is designed to allow us to differentiate hppa32 from hppa64 targets. */ diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h index a8067cf6b6c..cd77e0308e0 100644 --- a/gdb/i386-tdep.h +++ b/gdb/i386-tdep.h @@ -57,7 +57,7 @@ enum struct_return }; /* i386 architecture specific information. */ -struct i386_gdbarch_tdep : gdbarch_tdep +struct i386_gdbarch_tdep : gdbarch_tdep_base { /* General-purpose registers. */ int *gregset_reg_offset = 0; diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h index 675d0d871b2..f06974fd296 100644 --- a/gdb/ia64-tdep.h +++ b/gdb/ia64-tdep.h @@ -229,7 +229,7 @@ struct ia64_infcall_ops void (*set_function_addr) (struct regcache *regcache, CORE_ADDR func_addr); }; -struct ia64_gdbarch_tdep : gdbarch_tdep +struct ia64_gdbarch_tdep : gdbarch_tdep_base { CORE_ADDR (*sigcontext_register_address) (struct gdbarch *, CORE_ADDR, int) = nullptr; diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c index 4a781c394e9..4cbff537fab 100644 --- a/gdb/lm32-tdep.c +++ b/gdb/lm32-tdep.c @@ -43,7 +43,7 @@ #define LM32_REG2(insn) ((insn >> 11) & 0x1f) #define LM32_IMM16(insn) ((((long)insn & 0xffff) << 16) >> 16) -struct lm32_gdbarch_tdep : gdbarch_tdep +struct lm32_gdbarch_tdep : gdbarch_tdep_base { /* gdbarch target dependent data here. Currently unused for LM32. */ }; diff --git a/gdb/loongarch-tdep.h b/gdb/loongarch-tdep.h index e35b6cf4c7a..c5527f7d148 100644 --- a/gdb/loongarch-tdep.h +++ b/gdb/loongarch-tdep.h @@ -32,7 +32,7 @@ extern const struct regset loongarch_gregset; extern const struct regset loongarch_fpregset; /* Target-dependent structure in gdbarch. */ -struct loongarch_gdbarch_tdep : gdbarch_tdep +struct loongarch_gdbarch_tdep : gdbarch_tdep_base { /* Features about the abi that impact how the gdbarch is configured. */ struct loongarch_gdbarch_features abi_features; diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c index 37456d16cb3..30f716b6969 100644 --- a/gdb/m32c-tdep.c +++ b/gdb/m32c-tdep.c @@ -96,7 +96,7 @@ struct m32c_reg #define M32C_MAX_DWARF_REGNUM (40) -struct m32c_gdbarch_tdep : gdbarch_tdep +struct m32c_gdbarch_tdep : gdbarch_tdep_base { /* All the registers for this variant, indexed by GDB register number, and the number of registers present. */ diff --git a/gdb/m32r-tdep.h b/gdb/m32r-tdep.h index 1fa143adc74..09d5b245770 100644 --- a/gdb/m32r-tdep.h +++ b/gdb/m32r-tdep.h @@ -22,7 +22,7 @@ #include "gdbarch.h" -struct m32r_gdbarch_tdep : gdbarch_tdep +struct m32r_gdbarch_tdep : gdbarch_tdep_base { /* gdbarch target dependent data here. Currently unused for M32R. */ }; diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c index 9eb18b937be..7ea1f9a5b91 100644 --- a/gdb/m68hc11-tdep.c +++ b/gdb/m68hc11-tdep.c @@ -124,7 +124,7 @@ enum insn_return_kind { #define M68HC12_HARD_PC_REGNUM (SOFT_D32_REGNUM+1) struct insn_sequence; -struct m68gc11_gdbarch_tdep : gdbarch_tdep +struct m68gc11_gdbarch_tdep : gdbarch_tdep_base { /* Stack pointer correction value. For 68hc11, the stack pointer points to the next push location. An offset of 1 must be applied to obtain diff --git a/gdb/m68k-tdep.h b/gdb/m68k-tdep.h index c70a26e8554..785e3fdb84f 100644 --- a/gdb/m68k-tdep.h +++ b/gdb/m68k-tdep.h @@ -69,7 +69,7 @@ enum m68k_flavour /* Target-dependent structure in gdbarch. */ -struct m68k_gdbarch_tdep : gdbarch_tdep +struct m68k_gdbarch_tdep : gdbarch_tdep_base { /* Offset to PC value in the jump buffer. If this is negative, longjmp support will be disabled. */ diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c index d5ba78c6df9..170b4b07460 100644 --- a/gdb/mep-tdep.c +++ b/gdb/mep-tdep.c @@ -116,7 +116,7 @@ options are present on the current processor. */ -struct mep_gdbarch_tdep : gdbarch_tdep +struct mep_gdbarch_tdep : gdbarch_tdep_base { /* A CGEN cpu descriptor for this BFD architecture and machine. diff --git a/gdb/microblaze-tdep.h b/gdb/microblaze-tdep.h index 4d90e8785dc..48b2581fcc7 100644 --- a/gdb/microblaze-tdep.h +++ b/gdb/microblaze-tdep.h @@ -23,7 +23,7 @@ #include "gdbarch.h" /* Microblaze architecture-specific information. */ -struct microblaze_gdbarch_tdep : gdbarch_tdep +struct microblaze_gdbarch_tdep : gdbarch_tdep_base { }; diff --git a/gdb/mips-tdep.h b/gdb/mips-tdep.h index 4d2664d4273..24ed678a521 100644 --- a/gdb/mips-tdep.h +++ b/gdb/mips-tdep.h @@ -93,7 +93,7 @@ enum mips_fpu_type }; /* MIPS specific per-architecture information. */ -struct mips_gdbarch_tdep : gdbarch_tdep +struct mips_gdbarch_tdep : gdbarch_tdep_base { /* from the elf header */ int elf_flags = 0; diff --git a/gdb/mn10300-tdep.h b/gdb/mn10300-tdep.h index 87b861ead90..dacfb9d2948 100644 --- a/gdb/mn10300-tdep.h +++ b/gdb/mn10300-tdep.h @@ -76,7 +76,7 @@ enum frame_kind { }; /* mn10300 private data. */ -struct mn10300_gdbarch_tdep : gdbarch_tdep +struct mn10300_gdbarch_tdep : gdbarch_tdep_base { int am33_mode; }; diff --git a/gdb/moxie-tdep.h b/gdb/moxie-tdep.h index 91d007fd723..69bb5d0fa3a 100644 --- a/gdb/moxie-tdep.h +++ b/gdb/moxie-tdep.h @@ -22,7 +22,7 @@ #include "gdbarch.h" -struct moxie_gdbarch_tdep : gdbarch_tdep +struct moxie_gdbarch_tdep : gdbarch_tdep_base { /* gdbarch target dependent data here. Currently unused for MOXIE. */ }; diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index 4ae8b3d5626..cf4106d1a34 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -105,7 +105,7 @@ enum /* Architecture specific data. */ -struct msp430_gdbarch_tdep : gdbarch_tdep +struct msp430_gdbarch_tdep : gdbarch_tdep_base { /* The ELF header flags specify the multilib used. */ int elf_flags = 0; diff --git a/gdb/nds32-tdep.h b/gdb/nds32-tdep.h index 2cabd6a173f..e68017b4667 100644 --- a/gdb/nds32-tdep.h +++ b/gdb/nds32-tdep.h @@ -42,7 +42,7 @@ enum nds32_regnum NDS32_FD0_REGNUM = NDS32_NUM_REGS, }; -struct nds32_gdbarch_tdep : gdbarch_tdep +struct nds32_gdbarch_tdep : gdbarch_tdep_base { /* The guessed FPU configuration. */ int fpu_freg = 0; diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h index b8913ed1baa..cbf2599f5c0 100644 --- a/gdb/nios2-tdep.h +++ b/gdb/nios2-tdep.h @@ -69,7 +69,7 @@ #define NIOS2_CDX_OPCODE_SIZE 2 /* Target-dependent structure in gdbarch. */ -struct nios2_gdbarch_tdep : gdbarch_tdep +struct nios2_gdbarch_tdep : gdbarch_tdep_base { /* Assumes FRAME is stopped at a syscall (trap) instruction; returns the expected next PC. */ diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c index 4699b755d42..360a7cb36c1 100644 --- a/gdb/or1k-tdep.c +++ b/gdb/or1k-tdep.c @@ -63,7 +63,7 @@ show_or1k_debug (struct ui_file *file, int from_tty, /* The target-dependent structure for gdbarch. */ -struct or1k_gdbarch_tdep : gdbarch_tdep +struct or1k_gdbarch_tdep : gdbarch_tdep_base { int bytes_per_word = 0; int bytes_per_address = 0; diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h index 80a7dd080a2..44f63b145c6 100644 --- a/gdb/ppc-tdep.h +++ b/gdb/ppc-tdep.h @@ -205,7 +205,7 @@ enum powerpc_long_double_abi POWERPC_LONG_DOUBLE_LAST }; -struct ppc_gdbarch_tdep : gdbarch_tdep +struct ppc_gdbarch_tdep : gdbarch_tdep_base { int wordsize = 0; /* Size in bytes of fixed-point word. */ int soft_float = 0; /* Avoid FP registers for arguments? */ diff --git a/gdb/riscv-tdep.h b/gdb/riscv-tdep.h index ac4b4b7144d..826a002ef92 100644 --- a/gdb/riscv-tdep.h +++ b/gdb/riscv-tdep.h @@ -76,7 +76,7 @@ enum }; /* RISC-V specific per-architecture information. */ -struct riscv_gdbarch_tdep : gdbarch_tdep +struct riscv_gdbarch_tdep : gdbarch_tdep_base { /* Features about the target hardware that impact how the gdbarch is configured. Two gdbarch instances are compatible only if this field diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c index 2462e7a191d..be668bfa6fe 100644 --- a/gdb/rl78-tdep.c +++ b/gdb/rl78-tdep.c @@ -210,7 +210,7 @@ enum /* Architecture specific data. */ -struct rl78_gdbarch_tdep : gdbarch_tdep +struct rl78_gdbarch_tdep : gdbarch_tdep_base { /* The ELF header flags specify the multilib used. */ int elf_flags = 0; diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c index c67d4057195..989d90096bd 100644 --- a/gdb/rx-tdep.c +++ b/gdb/rx-tdep.c @@ -69,7 +69,7 @@ enum rx_frame_type { }; /* Architecture specific data. */ -struct rx_gdbarch_tdep : gdbarch_tdep +struct rx_gdbarch_tdep : gdbarch_tdep_base { /* The ELF header flags specify the multilib used. */ int elf_flags = 0; diff --git a/gdb/s12z-tdep.c b/gdb/s12z-tdep.c index 4e33faaea9a..5e49c615f1b 100644 --- a/gdb/s12z-tdep.c +++ b/gdb/s12z-tdep.c @@ -458,7 +458,7 @@ constexpr gdb_byte s12z_break_insn[] = {0x00}; typedef BP_MANIPULATION (s12z_break_insn) s12z_breakpoint; -struct s12z_gdbarch_tdep : gdbarch_tdep +struct s12z_gdbarch_tdep : gdbarch_tdep_base { }; diff --git a/gdb/s390-tdep.h b/gdb/s390-tdep.h index ac08da1c7c8..f51423cb018 100644 --- a/gdb/s390-tdep.h +++ b/gdb/s390-tdep.h @@ -38,7 +38,7 @@ enum s390_vector_abi_kind /* The tdep structure. */ -struct s390_gdbarch_tdep : gdbarch_tdep +struct s390_gdbarch_tdep : gdbarch_tdep_base { /* Target description. */ const struct target_desc *tdesc = nullptr; diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h index bc0383fb075..54aa7ff828f 100644 --- a/gdb/sh-tdep.h +++ b/gdb/sh-tdep.h @@ -91,7 +91,7 @@ struct sh_corefile_regmap unsigned int offset; }; -struct sh_gdbarch_tdep : gdbarch_tdep +struct sh_gdbarch_tdep : gdbarch_tdep_base { /* Non-NULL when debugging from a core file. Provides the offset where each general-purpose register is stored inside the associated diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 36ff5349a0a..f2070f10e12 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -57,7 +57,7 @@ struct sparc_fpregmap /* SPARC architecture-specific information. */ -struct sparc_gdbarch_tdep : gdbarch_tdep +struct sparc_gdbarch_tdep : gdbarch_tdep_base { /* Register numbers for the PN and nPC registers. The definitions for (64-bit) UltraSPARC differ from the (32-bit) SPARC diff --git a/gdb/tic6x-tdep.h b/gdb/tic6x-tdep.h index d9b9644f8df..ebfd6e686fa 100644 --- a/gdb/tic6x-tdep.h +++ b/gdb/tic6x-tdep.h @@ -46,7 +46,7 @@ extern const gdb_byte tic6x_bkpt_illegal_opcode_be[]; extern const gdb_byte tic6x_bkpt_illegal_opcode_le[]; /* Target-dependent structure in gdbarch. */ -struct tic6x_gdbarch_tdep : gdbarch_tdep +struct tic6x_gdbarch_tdep : gdbarch_tdep_base { /* Return the expected next PC if FRAME is stopped at a syscall instruction. */ diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c index 4de5faa6a47..f7094e37a92 100644 --- a/gdb/v850-tdep.c +++ b/gdb/v850-tdep.c @@ -265,7 +265,7 @@ enum v850_abi /* Architecture specific data. */ -struct v850_gdbarch_tdep : gdbarch_tdep +struct v850_gdbarch_tdep : gdbarch_tdep_base { /* Fields from the ELF header. */ int e_flags = 0; diff --git a/gdb/xtensa-tdep.h b/gdb/xtensa-tdep.h index 1840ef98b49..da7a7080afd 100644 --- a/gdb/xtensa-tdep.h +++ b/gdb/xtensa-tdep.h @@ -167,7 +167,7 @@ struct ctype_cache /* Xtensa-specific target dependencies. */ -struct xtensa_gdbarch_tdep : gdbarch_tdep +struct xtensa_gdbarch_tdep : gdbarch_tdep_base { xtensa_gdbarch_tdep (xtensa_register_t *regmap) : regmap (regmap) diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c index 6a11883e7b4..1ab375c5014 100644 --- a/gdb/z80-tdep.c +++ b/gdb/z80-tdep.c @@ -55,7 +55,7 @@ next frame - frame of caller, which has called current function */ -struct z80_gdbarch_tdep : gdbarch_tdep +struct z80_gdbarch_tdep : gdbarch_tdep_base { /* Number of bytes used for address: 2 bytes for all Z80 family