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 50BC53857B8A for ; Mon, 25 Jul 2022 11:19:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 50BC53857B8A Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-39-GH-F4kPZPGK6rO6b1gKZtA-1; Mon, 25 Jul 2022 07:19:23 -0400 X-MC-Unique: GH-F4kPZPGK6rO6b1gKZtA-1 Received: by mail-wr1-f70.google.com with SMTP id k26-20020adfb35a000000b0021d6c3b9363so1523240wrd.1 for ; Mon, 25 Jul 2022 04:19:22 -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:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=iLfQxlaKGALfxbIsqsefUPmYuwL1KlPk242acX9F6B4=; b=xRg3yK7TsX2hAu+tMJ3b6qll2ljjHcic+gVqFd4aV5chn3JZPOVGoBG1rYJanYPcN3 r5ZaYVZTaWAlxIn/+7EpLFYAd9FeCgXKuKYe+auSaoznQtd7Qf+vy9xrtYluD0/FckRW u8aJU+aER/L7BAr5DdTs/2tEVrO4iJ2qS6WRSwyaiRofIBgcvcSGDaO2fQUeradGlHq/ eXkwEl+G4L84eHnXFQJI9L74mdyRWgpEu27rRoeYcn1ij5JUzE3TLgY1oLg++d5554A1 YrKr52t35xAurHZaO407NdiORXB5TTgRPiFk67gfYTPAV5UG2LnF4xN+TBTNmSbwInGs u27Q== X-Gm-Message-State: AJIora+SdirwT7U63Y+npSlFEIxgupZjPthQ8OpmzfpnLiIJrBvQkHOk t0SD4W1ZUJHuRvmb+/t7MrhHKixy6DhkYA5y5VQNfPT9OSn2FAlt6CsRK026uoymymgtWNinIrg uBl9BDyfXOwLkpophNQqbHQ== X-Received: by 2002:a05:600c:2854:b0:3a3:1551:d7d with SMTP id r20-20020a05600c285400b003a315510d7dmr7816184wmb.174.1658747960876; Mon, 25 Jul 2022 04:19:20 -0700 (PDT) X-Google-Smtp-Source: AGRyM1twfQAjd0hmkrsyaQ0g77B561LQOr8lC9EbcRUKSKMrewYR7L0RS2RJ1fXidrk76csD7maRpw== X-Received: by 2002:a05:600c:2854:b0:3a3:1551:d7d with SMTP id r20-20020a05600c285400b003a315510d7dmr7816143wmb.174.1658747960066; Mon, 25 Jul 2022 04:19:20 -0700 (PDT) Received: from localhost (15.72.115.87.dyn.plus.net. [87.115.72.15]) by smtp.gmail.com with ESMTPSA id m6-20020a05600c4f4600b003a3442f1229sm10398166wmq.29.2022.07.25.04.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Jul 2022 04:19:19 -0700 (PDT) From: Andrew Burgess To: Mark Wielaard , gdb-patches@sourceware.org Cc: Mark Wielaard Subject: Re: [PATCH] Rename gdbarch_tdep template function to gdbarch_tdep_cast for g++ 4.8 In-Reply-To: <20220723000228.33276-1-mark@klomp.org> References: <20220723000228.33276-1-mark@klomp.org> Date: Mon, 25 Jul 2022 12:19:18 +0100 Message-ID: <87fsipa18p.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.5 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: Mon, 25 Jul 2022 11:19:28 -0000 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? Thanks, Andrew --- commit faff6041468dd13b26c5380862752f1039a92dc9 Author: Andrew Burgess Date: Mon Jul 25 12:07:11 2022 +0100 gdb: rename gdbarch_tdep struct to fix g++ 4.8 build After this 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 as we have '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. To resolve this confusion I propose 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. 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..c439ac1dc47 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -63,9 +63,9 @@ struct inferior; destructor ensures the class has RTTI information, which allows gdb::checked_static_cast to be used, the gdbarch_tdep the 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 @@ -153,7 +153,7 @@ using read_core_file_mappings_loop_ftype = /* An internal function that should _only_ be called from gdbarch_tdep. Returns the gdbarch_tdep 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 @@ -164,7 +164,7 @@ 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 +293,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