From: Simon Marchi Date: Mon, 17 Nov 2025 21:48:25 +0000 (-0500) Subject: gdb, gdbserver: propagate use of target_desc unique pointers X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1a5362ce51ef79ffb61caa20c93284dc368dc74a;p=thirdparty%2Fbinutils-gdb.git gdb, gdbserver: propagate use of target_desc unique pointers Propagate the use of target_desc unique pointers further. Basically, avoid releasing target_desc objects, except in some spots in gdbserver (e.g. netbsd) where we don't currently have a persistent container for created target descriptions (and the target desc just leaks). Introduce const_target_desc_up to change some `const target_desc *` to a unique pointer without loss of constness. Architectures that use the old regformats/regdat.sh don't need to be changed, because their target_desc objects are statically allocated in the generated files. I was able to built-test these native configs: - Linux AArch64 - Linux ARC - Linux AMD64 - Linux ARM - Linux LoongArch - Linux M68K - Linux Microblaze - Linux MIPS (32 and 64) - Linux or1k - Linux PPC (32 and 64) - Linux RISC-V - Linux s390x - Linux SH4 - Linux Sparc (32 and 64) - Linux Xtensa - FreeBSD AMD64 - NetBSD AMD64 - Windows i686 - Windows AMD64 For the rest, I did my best by staring at the code long enough. I probably missed or messed some spots, but that shouldn't be difficult to fix. Change-Id: I8db8790c57942edd2bfe890987157e2dc0c67879 Reviewed-by: Thiago Jung Bauermann --- diff --git a/gdb/aarch32-tdep.c b/gdb/aarch32-tdep.c index 8f27a4ee49e..54e67496a0e 100644 --- a/gdb/aarch32-tdep.c +++ b/gdb/aarch32-tdep.c @@ -20,20 +20,17 @@ #include "gdbsupport/common-regcache.h" #include "arch/aarch32.h" -static struct target_desc *tdesc_aarch32_list[2]; +static const_target_desc_up tdesc_aarch32_list[2]; /* See aarch32-tdep.h. */ const target_desc * aarch32_read_description (bool tls) { - struct target_desc *tdesc = tdesc_aarch32_list[tls]; + const_target_desc_up &tdesc = tdesc_aarch32_list[tls]; if (tdesc == nullptr) - { - tdesc = aarch32_create_target_description (tls); - tdesc_aarch32_list[tls] = tdesc; - } + tdesc = aarch32_create_target_description (tls); - return tdesc; + return tdesc.get (); } diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index db8dff5d031..86bfa559ee6 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -54,7 +54,6 @@ #include "opcode/aarch64.h" #include -#include /* For inferior_ptid and current_inferior (). */ #include "inferior.h" @@ -66,7 +65,8 @@ #define HA_MAX_NUM_FLDS 4 /* All possible aarch64 target descriptors. */ -static gdb::unordered_map tdesc_aarch64_map; +static gdb::unordered_map + tdesc_aarch64_map; /* The standard register names, and all the valid aliases for them. We're not adding fp here, that name is already taken, see @@ -4029,15 +4029,12 @@ aarch64_read_description (const aarch64_features &features) error (_("VQ is %" PRIu64 ", maximum supported value is %d"), features.vq, AARCH64_MAX_SVE_VQ); - struct target_desc *tdesc = tdesc_aarch64_map[features]; + const_target_desc_up &tdesc = tdesc_aarch64_map[features]; - if (tdesc == NULL) - { - tdesc = aarch64_create_target_description (features); - tdesc_aarch64_map[features] = tdesc; - } + if (tdesc == nullptr) + tdesc = aarch64_create_target_description (features); - return tdesc; + return tdesc.get (); } /* Return the VQ used when creating the target description TDESC. */ diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 2fd0317d99a..562450ea779 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -1702,7 +1702,7 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) return arches->gdbarch; if (tdesc == nullptr) - tdesc = tdesc_alpha; + tdesc = tdesc_alpha.get (); /* Validate target description. */ if (tdesc_has_registers (tdesc)) diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index f7224ff76e7..63f05d4b452 100755 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -3716,21 +3716,20 @@ amd64_x32_none_init_abi (gdbarch_info info, gdbarch *arch) const struct target_desc * amd64_target_description (uint64_t xstate_bv, bool segments) { - static target_desc *amd64_tdescs \ + static const_target_desc_up amd64_tdescs \ [2/*AVX*/][2/*AVX512*/][2/*PKRU*/][2/*CET_U*/][2/*segments*/] = {}; - target_desc **tdesc; - - tdesc = &amd64_tdescs[(xstate_bv & X86_XSTATE_AVX) ? 1 : 0] - [(xstate_bv & X86_XSTATE_AVX512) ? 1 : 0] - [(xstate_bv & X86_XSTATE_PKRU) ? 1 : 0] - [(xstate_bv & X86_XSTATE_CET_U) ? 1 : 0] - [segments ? 1 : 0]; - - if (*tdesc == NULL) - *tdesc = amd64_create_target_description (xstate_bv, false, - false, segments); - - return *tdesc; + const_target_desc_up &tdesc + = amd64_tdescs[(xstate_bv & X86_XSTATE_AVX) ? 1 : 0] + [(xstate_bv & X86_XSTATE_AVX512) ? 1 : 0] + [(xstate_bv & X86_XSTATE_PKRU) ? 1 : 0] + [(xstate_bv & X86_XSTATE_CET_U) ? 1 : 0] + [segments ? 1 : 0]; + + if (tdesc == nullptr) + tdesc = amd64_create_target_description (xstate_bv, false, + false, segments); + + return tdesc.get (); } #if GDB_SELF_TEST diff --git a/gdb/arch/aarch32.c b/gdb/arch/aarch32.c index 9ae69fd589e..489215c6c1c 100644 --- a/gdb/arch/aarch32.c +++ b/gdb/arch/aarch32.c @@ -23,7 +23,7 @@ /* See aarch32.h. */ -target_desc * +target_desc_up aarch32_create_target_description (bool tls) { target_desc_up tdesc = allocate_target_description (); @@ -41,5 +41,5 @@ aarch32_create_target_description (bool tls) if (tls) regnum = create_feature_arm_arm_tls (tdesc.get (), regnum); - return tdesc.release (); + return tdesc; } diff --git a/gdb/arch/aarch32.h b/gdb/arch/aarch32.h index 7dd43f804e6..eff96673d85 100644 --- a/gdb/arch/aarch32.h +++ b/gdb/arch/aarch32.h @@ -22,6 +22,6 @@ /* Create the AArch32 target description. */ -target_desc *aarch32_create_target_description (bool tls); +target_desc_up aarch32_create_target_description (bool tls); #endif /* GDB_ARCH_AARCH32_H */ diff --git a/gdb/arch/aarch64.c b/gdb/arch/aarch64.c index 622138f43b5..091b4e2982c 100644 --- a/gdb/arch/aarch64.c +++ b/gdb/arch/aarch64.c @@ -32,7 +32,7 @@ /* See arch/aarch64.h. */ -target_desc * +target_desc_up aarch64_create_target_description (const aarch64_features &features) { target_desc_up tdesc = allocate_target_description (); @@ -77,7 +77,7 @@ aarch64_create_target_description (const aarch64_features &features) if (features.fpmr) regnum = create_feature_aarch64_fpmr (tdesc.get (), regnum); - return tdesc.release (); + return tdesc; } /* See arch/aarch64.h. */ diff --git a/gdb/arch/aarch64.h b/gdb/arch/aarch64.h index bcbf47dc3a3..16e91c51aad 100644 --- a/gdb/arch/aarch64.h +++ b/gdb/arch/aarch64.h @@ -109,7 +109,7 @@ namespace std /* Create the aarch64 target description. */ -target_desc * +target_desc_up aarch64_create_target_description (const aarch64_features &features); /* Given a pointer value POINTER and a MASK of non-address bits, remove the diff --git a/gdb/arch/amd64-linux-tdesc.c b/gdb/arch/amd64-linux-tdesc.c index 4a7f2329f23..eefa3c45b6e 100644 --- a/gdb/arch/amd64-linux-tdesc.c +++ b/gdb/arch/amd64-linux-tdesc.c @@ -30,7 +30,7 @@ const struct target_desc * amd64_linux_read_description (uint64_t xstate_bv, bool is_x32) { /* The type used for the amd64 and x32 target description caches. */ - using tdesc_cache_type = gdb::unordered_map; + using tdesc_cache_type = gdb::unordered_map; /* Caches for the previously seen amd64 and x32 target descriptions, indexed by the xstate_bv value that created the target @@ -50,19 +50,18 @@ amd64_linux_read_description (uint64_t xstate_bv, bool is_x32) ? x86_linux_x32_xstate_bv_feature_mask () : x86_linux_amd64_xstate_bv_feature_mask (); - const auto it = tdesc_cache.find (xstate_bv); - if (it != tdesc_cache.end ()) - return it->second.get (); + const_target_desc_up &tdesc = tdesc_cache[xstate_bv]; + if (tdesc != nullptr) + return tdesc.get (); /* Create the previously unseen target description. */ - target_desc_up tdesc (amd64_create_target_description (xstate_bv, is_x32, - true, true)); - x86_linux_post_init_tdesc (tdesc.get (), true); + target_desc_up new_tdesc + = amd64_create_target_description (xstate_bv, is_x32, true, true); + x86_linux_post_init_tdesc (new_tdesc.get (), true); /* Add to the cache, and return a pointer borrowed from the target_desc_up. This is safe as the cache (and the pointers contained within it) are not deleted until GDB exits. */ - target_desc *ptr = tdesc.get (); - tdesc_cache.emplace (xstate_bv, std::move (tdesc)); - return ptr; + tdesc = std::move (new_tdesc); + return tdesc.get (); } diff --git a/gdb/arch/amd64.c b/gdb/arch/amd64.c index 9fbe8026600..01a0de2d5f3 100644 --- a/gdb/arch/amd64.c +++ b/gdb/arch/amd64.c @@ -34,7 +34,7 @@ /* See arch/amd64.h. */ -target_desc * +target_desc_up amd64_create_target_description (uint64_t xstate_bv, bool is_x32, bool is_linux, bool segments) { @@ -78,5 +78,5 @@ amd64_create_target_description (uint64_t xstate_bv, bool is_x32, regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum); } - return tdesc.release (); + return tdesc; } diff --git a/gdb/arch/amd64.h b/gdb/arch/amd64.h index 60c17ebc42d..1782d39cc59 100644 --- a/gdb/arch/amd64.h +++ b/gdb/arch/amd64.h @@ -26,8 +26,8 @@ target descriptions for Linux. If SEGMENTS is true, then include the "org.gnu.gdb.i386.segments" feature registers. */ -target_desc *amd64_create_target_description (uint64_t xstate_bv, - bool is_x32, bool is_linux, - bool segments); +target_desc_up amd64_create_target_description (uint64_t xstate_bv, + bool is_x32, bool is_linux, + bool segments); #endif /* GDB_ARCH_AMD64_H */ diff --git a/gdb/arch/arm.c b/gdb/arch/arm.c index 1843dbee612..36241f70f8f 100644 --- a/gdb/arch/arm.c +++ b/gdb/arch/arm.c @@ -373,7 +373,7 @@ shifted_reg_val (reg_buffer_common *regcache, unsigned long inst, /* See arch/arm.h. */ -target_desc * +target_desc_up arm_create_target_description (arm_fp_type fp_type, bool tls) { target_desc_up tdesc = allocate_target_description (); @@ -413,18 +413,18 @@ arm_create_target_description (arm_fp_type fp_type, bool tls) if (tls) regnum = create_feature_arm_arm_tls (tdesc.get (), regnum); - return tdesc.release (); + return tdesc; } /* See arch/arm.h. */ -target_desc * +target_desc_up arm_create_mprofile_target_description (arm_m_profile_type m_type) { - target_desc *tdesc = allocate_target_description ().release (); + target_desc_up tdesc = allocate_target_description (); #ifndef IN_PROCESS_AGENT - set_tdesc_architecture (tdesc, "arm"); + set_tdesc_architecture (tdesc.get (), "arm"); #endif long regnum = 0; @@ -432,27 +432,27 @@ arm_create_mprofile_target_description (arm_m_profile_type m_type) switch (m_type) { case ARM_M_TYPE_M_PROFILE: - regnum = create_feature_arm_arm_m_profile (tdesc, regnum); + regnum = create_feature_arm_arm_m_profile (tdesc.get (), regnum); break; case ARM_M_TYPE_VFP_D16: - regnum = create_feature_arm_arm_m_profile (tdesc, regnum); - regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum); + regnum = create_feature_arm_arm_m_profile (tdesc.get (), regnum); + regnum = create_feature_arm_arm_vfpv2 (tdesc.get (), regnum); break; case ARM_M_TYPE_WITH_FPA: - regnum = create_feature_arm_arm_m_profile_with_fpa (tdesc, regnum); + regnum = create_feature_arm_arm_m_profile_with_fpa (tdesc.get (), regnum); break; case ARM_M_TYPE_MVE: - regnum = create_feature_arm_arm_m_profile (tdesc, regnum); - regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum); - regnum = create_feature_arm_arm_m_profile_mve (tdesc, regnum); + regnum = create_feature_arm_arm_m_profile (tdesc.get (), regnum); + regnum = create_feature_arm_arm_vfpv2 (tdesc.get (), regnum); + regnum = create_feature_arm_arm_m_profile_mve (tdesc.get (), regnum); break; case ARM_M_TYPE_SYSTEM: - regnum = create_feature_arm_arm_m_profile (tdesc, regnum); - regnum = create_feature_arm_arm_m_system (tdesc, regnum); + regnum = create_feature_arm_arm_m_profile (tdesc.get (), regnum); + regnum = create_feature_arm_arm_m_system (tdesc.get (), regnum); break; default: diff --git a/gdb/arch/arm.h b/gdb/arch/arm.h index d9c750329a4..3e99e1bf6af 100644 --- a/gdb/arch/arm.h +++ b/gdb/arch/arm.h @@ -238,10 +238,11 @@ unsigned long shifted_reg_val (reg_buffer_common *regcache, /* Create an Arm target description with the given FP hardware type. */ -target_desc *arm_create_target_description (arm_fp_type fp_type, bool tls); +target_desc_up arm_create_target_description (arm_fp_type fp_type, bool tls); /* Create an Arm M-profile target description with the given hardware type. */ -target_desc *arm_create_mprofile_target_description (arm_m_profile_type m_type); +target_desc_up arm_create_mprofile_target_description + (arm_m_profile_type m_type); #endif /* GDB_ARCH_ARM_H */ diff --git a/gdb/arch/i386-linux-tdesc.c b/gdb/arch/i386-linux-tdesc.c index 74f192b9c37..c3ee3028785 100644 --- a/gdb/arch/i386-linux-tdesc.c +++ b/gdb/arch/i386-linux-tdesc.c @@ -32,7 +32,7 @@ i386_linux_read_description (uint64_t xstate_bv) xstate_bv value that created the target description. This needs to be static within this function to ensure it is initialised before first use. */ - static gdb::unordered_map i386_tdesc_cache; + static gdb::unordered_map i386_tdesc_cache; /* Only some bits are checked when creating a tdesc, but the XSTATE_BV value contains other feature bits that are not relevant @@ -42,19 +42,18 @@ i386_linux_read_description (uint64_t xstate_bv) set. */ xstate_bv &= x86_linux_i386_xstate_bv_feature_mask (); - const auto it = i386_tdesc_cache.find (xstate_bv); - if (it != i386_tdesc_cache.end ()) - return it->second.get (); + const_target_desc_up &tdesc = i386_tdesc_cache[xstate_bv]; + if (tdesc != nullptr) + return tdesc.get (); /* Create the previously unseen target description. */ - target_desc_up tdesc - (i386_create_target_description (xstate_bv, true, false)); - x86_linux_post_init_tdesc (tdesc.get (), false); + target_desc_up new_tdesc + = i386_create_target_description (xstate_bv, true, false); + x86_linux_post_init_tdesc (new_tdesc.get (), false); /* Add to the cache, and return a pointer borrowed from the target_desc_up. This is safe as the cache (and the pointers contained within it) are not deleted until GDB exits. */ - target_desc *ptr = tdesc.get (); - i386_tdesc_cache.emplace (xstate_bv, std::move (tdesc)); - return ptr; + tdesc = std::move (new_tdesc); + return tdesc.get (); } diff --git a/gdb/arch/i386.c b/gdb/arch/i386.c index 4ec4f103111..88aa22323f6 100644 --- a/gdb/arch/i386.c +++ b/gdb/arch/i386.c @@ -32,7 +32,7 @@ /* See arch/i386.h. */ -target_desc * +target_desc_up i386_create_target_description (uint64_t xstate_bv, bool is_linux, bool segments) { @@ -70,5 +70,5 @@ i386_create_target_description (uint64_t xstate_bv, bool is_linux, if (xstate_bv & X86_XSTATE_CET_U) regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum); - return tdesc.release (); + return tdesc; } diff --git a/gdb/arch/i386.h b/gdb/arch/i386.h index 91a581f83ee..145ed151acd 100644 --- a/gdb/arch/i386.h +++ b/gdb/arch/i386.h @@ -25,8 +25,7 @@ true, create target descriptions for Linux. If SEGMENTS is true, then include the "org.gnu.gdb.i386.segments" feature registers. */ -target_desc *i386_create_target_description (uint64_t xstate_bv, - bool is_linux, - bool segments); +target_desc_up i386_create_target_description (uint64_t xstate_bv, + bool is_linux, bool segments); #endif /* GDB_ARCH_I386_H */ diff --git a/gdb/arch/loongarch.c b/gdb/arch/loongarch.c index 25e698d9fce..395c3db0614 100644 --- a/gdb/arch/loongarch.c +++ b/gdb/arch/loongarch.c @@ -89,7 +89,7 @@ struct loongarch_gdbarch_features_hasher /* Cache of previously seen target descriptions, indexed by the feature set that created them. */ static std::unordered_map loongarch_tdesc_cache; const target_desc * @@ -98,18 +98,11 @@ loongarch_lookup_target_description (const struct loongarch_gdbarch_features fea /* Lookup in the cache. If we find it then return the pointer out of the target_desc_up (which is a unique_ptr). This is safe as the loongarch_tdesc_cache will exist until GDB exits. */ - const auto it = loongarch_tdesc_cache.find (features); - if (it != loongarch_tdesc_cache.end ()) - return it->second.get (); - - target_desc_up tdesc (loongarch_create_target_description (features)); - - /* Add to the cache, and return a pointer borrowed from the - target_desc_up. This is safe as the cache (and the pointers - contained within it) are not deleted until GDB exits. */ - target_desc *ptr = tdesc.get (); - loongarch_tdesc_cache.emplace (features, std::move (tdesc)); - return ptr; + const_target_desc_up &tdesc = loongarch_tdesc_cache[features]; + if (tdesc == nullptr) + tdesc = loongarch_create_target_description (features); + + return tdesc.get (); } #endif /* !GDBSERVER */ diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c index 2088b7656b1..40c54c191a6 100644 --- a/gdb/arch/ppc-linux-common.c +++ b/gdb/arch/ppc-linux-common.c @@ -50,34 +50,34 @@ ppc_linux_match_description (struct ppc_linux_features features) if (features.wordsize == 8) { if (features.vsx) - tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l - : features.isa207? tdesc_powerpc_isa207_vsx64l - : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l - : features.isa205? tdesc_powerpc_isa205_vsx64l - : tdesc_powerpc_vsx64l); + tdesc = (features.htm ? tdesc_powerpc_isa207_htm_vsx64l + : features.isa207 ? tdesc_powerpc_isa207_vsx64l + : features.ppr_dscr ? tdesc_powerpc_isa205_ppr_dscr_vsx64l + : features.isa205 ? tdesc_powerpc_isa205_vsx64l + : tdesc_powerpc_vsx64l).get (); else if (features.altivec) - tdesc = (features.isa205? tdesc_powerpc_isa205_altivec64l - : tdesc_powerpc_altivec64l); + tdesc = (features.isa205 ? tdesc_powerpc_isa205_altivec64l + : tdesc_powerpc_altivec64l).get (); else - tdesc = (features.isa205? tdesc_powerpc_isa205_64l - : tdesc_powerpc_64l); + tdesc = (features.isa205 ? tdesc_powerpc_isa205_64l + : tdesc_powerpc_64l).get (); } else { gdb_assert (features.wordsize == 4); if (features.vsx) - tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx32l - : features.isa207? tdesc_powerpc_isa207_vsx32l - : features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx32l - : features.isa205? tdesc_powerpc_isa205_vsx32l - : tdesc_powerpc_vsx32l); + tdesc = (features.htm ? tdesc_powerpc_isa207_htm_vsx32l + : features.isa207 ? tdesc_powerpc_isa207_vsx32l + : features.ppr_dscr ? tdesc_powerpc_isa205_ppr_dscr_vsx32l + : features.isa205 ? tdesc_powerpc_isa205_vsx32l + : tdesc_powerpc_vsx32l).get (); else if (features.altivec) - tdesc = (features.isa205? tdesc_powerpc_isa205_altivec32l - : tdesc_powerpc_altivec32l); + tdesc = (features.isa205 ? tdesc_powerpc_isa205_altivec32l + : tdesc_powerpc_altivec32l).get (); else - tdesc = (features.isa205? tdesc_powerpc_isa205_32l - : tdesc_powerpc_32l); + tdesc = (features.isa205 ? tdesc_powerpc_isa205_32l + : tdesc_powerpc_32l).get (); } gdb_assert (tdesc != NULL); diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h index 1ff316ad826..fbed67a7990 100644 --- a/gdb/arch/ppc-linux-tdesc.h +++ b/gdb/arch/ppc-linux-tdesc.h @@ -20,27 +20,29 @@ #ifndef GDB_ARCH_PPC_LINUX_TDESC_H #define GDB_ARCH_PPC_LINUX_TDESC_H +#include "gdbsupport/tdesc.h" + struct target_desc; -extern const struct target_desc *tdesc_powerpc_32l; -extern const struct target_desc *tdesc_powerpc_altivec32l; -extern const struct target_desc *tdesc_powerpc_vsx32l; -extern const struct target_desc *tdesc_powerpc_isa205_32l; -extern const struct target_desc *tdesc_powerpc_isa205_altivec32l; -extern const struct target_desc *tdesc_powerpc_isa205_vsx32l; -extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; -extern const struct target_desc *tdesc_powerpc_isa207_vsx32l; -extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; -extern const struct target_desc *tdesc_powerpc_e500l; - -extern const struct target_desc *tdesc_powerpc_64l; -extern const struct target_desc *tdesc_powerpc_altivec64l; -extern const struct target_desc *tdesc_powerpc_vsx64l; -extern const struct target_desc *tdesc_powerpc_isa205_64l; -extern const struct target_desc *tdesc_powerpc_isa205_altivec64l; -extern const struct target_desc *tdesc_powerpc_isa205_vsx64l; -extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; -extern const struct target_desc *tdesc_powerpc_isa207_vsx64l; -extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; +extern const_target_desc_up tdesc_powerpc_32l; +extern const_target_desc_up tdesc_powerpc_altivec32l; +extern const_target_desc_up tdesc_powerpc_vsx32l; +extern const_target_desc_up tdesc_powerpc_isa205_32l; +extern const_target_desc_up tdesc_powerpc_isa205_altivec32l; +extern const_target_desc_up tdesc_powerpc_isa205_vsx32l; +extern const_target_desc_up tdesc_powerpc_isa205_ppr_dscr_vsx32l; +extern const_target_desc_up tdesc_powerpc_isa207_vsx32l; +extern const_target_desc_up tdesc_powerpc_isa207_htm_vsx32l; +extern const_target_desc_up tdesc_powerpc_e500l; + +extern const_target_desc_up tdesc_powerpc_64l; +extern const_target_desc_up tdesc_powerpc_altivec64l; +extern const_target_desc_up tdesc_powerpc_vsx64l; +extern const_target_desc_up tdesc_powerpc_isa205_64l; +extern const_target_desc_up tdesc_powerpc_isa205_altivec64l; +extern const_target_desc_up tdesc_powerpc_isa205_vsx64l; +extern const_target_desc_up tdesc_powerpc_isa205_ppr_dscr_vsx64l; +extern const_target_desc_up tdesc_powerpc_isa207_vsx64l; +extern const_target_desc_up tdesc_powerpc_isa207_htm_vsx64l; #endif /* GDB_ARCH_PPC_LINUX_TDESC_H */ diff --git a/gdb/arch/tic6x.c b/gdb/arch/tic6x.c index 57243051608..ecfbd559f2b 100644 --- a/gdb/arch/tic6x.c +++ b/gdb/arch/tic6x.c @@ -25,7 +25,7 @@ /* Create tic6x target descriptions according to FEATURE. */ -target_desc * +target_desc_up tic6x_create_target_description (enum c6x_feature feature) { target_desc_up tdesc = allocate_target_description (); @@ -43,5 +43,5 @@ tic6x_create_target_description (enum c6x_feature feature) if (feature == C6X_C6XP) regnum = create_feature_tic6x_c6xp (tdesc.get (), regnum); - return tdesc.release (); + return tdesc; } diff --git a/gdb/arch/tic6x.h b/gdb/arch/tic6x.h index 6120892113e..30950e740b2 100644 --- a/gdb/arch/tic6x.h +++ b/gdb/arch/tic6x.h @@ -18,6 +18,8 @@ #ifndef GDB_ARCH_TIC6X_H #define GDB_ARCH_TIC6X_H +#include "gdbsupport/tdesc.h" + enum c6x_feature { C6X_CORE, @@ -26,6 +28,6 @@ enum c6x_feature C6X_LAST, }; -target_desc *tic6x_create_target_description (enum c6x_feature feature); +target_desc_up tic6x_create_target_description (c6x_feature feature); #endif /* GDB_ARCH_TIC6X_H */ diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 8845ef27acc..eef985bb276 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -240,8 +240,8 @@ static const char **valid_disassembly_styles; static const char *disassembly_style; /* All possible arm target descriptors. */ -static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID][2]; -static struct target_desc *tdesc_arm_mprofile_list[ARM_M_TYPE_INVALID]; +static const_target_desc_up tdesc_arm_list[ARM_FP_TYPE_INVALID][2]; +static const_target_desc_up tdesc_arm_mprofile_list[ARM_M_TYPE_INVALID]; /* This is used to keep the bfd arch_info in sync with the disassembly style. */ @@ -14961,15 +14961,12 @@ arm_process_record (struct gdbarch *gdbarch, struct regcache *regcache, const target_desc * arm_read_description (arm_fp_type fp_type, bool tls) { - struct target_desc *tdesc = tdesc_arm_list[fp_type][tls]; + const_target_desc_up &tdesc = tdesc_arm_list[fp_type][tls]; if (tdesc == nullptr) - { - tdesc = arm_create_target_description (fp_type, tls); - tdesc_arm_list[fp_type][tls] = tdesc; - } + tdesc = arm_create_target_description (fp_type, tls); - return tdesc; + return tdesc.get (); } /* See arm-tdep.h. */ @@ -14977,13 +14974,10 @@ arm_read_description (arm_fp_type fp_type, bool tls) const target_desc * arm_read_mprofile_description (arm_m_profile_type m_type) { - struct target_desc *tdesc = tdesc_arm_mprofile_list[m_type]; + const_target_desc_up &tdesc = tdesc_arm_mprofile_list[m_type]; if (tdesc == nullptr) - { - tdesc = arm_create_mprofile_target_description (m_type); - tdesc_arm_mprofile_list[m_type] = tdesc; - } + tdesc = arm_create_mprofile_target_description (m_type); - return tdesc; + return tdesc.get (); } diff --git a/gdb/features/alpha.c b/gdb/features/alpha.c index 35f12fcbd4c..73d3fdf6804 100644 --- a/gdb/features/alpha.c +++ b/gdb/features/alpha.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_alpha; +const_target_desc_up tdesc_alpha; static void initialize_tdesc_alpha (void) { @@ -107,5 +107,5 @@ initialize_tdesc_alpha (void) tdesc_create_reg (feature, "", 65, 0, NULL, 64, "int64"); tdesc_create_reg (feature, "unique", 66, 1, "system", 64, "int64"); - tdesc_alpha = result.release (); + tdesc_alpha = std::move (result); } diff --git a/gdb/features/microblaze-linux.c b/gdb/features/microblaze-linux.c index 087865cd41c..9f9fae38b5c 100644 --- a/gdb/features/microblaze-linux.c +++ b/gdb/features/microblaze-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_microblaze_linux; +const_target_desc_up tdesc_microblaze_linux; static void initialize_tdesc_microblaze_linux (void) { @@ -74,5 +74,5 @@ initialize_tdesc_microblaze_linux (void) tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int"); tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int"); - tdesc_microblaze_linux = result.release (); + tdesc_microblaze_linux = std::move (result); } diff --git a/gdb/features/microblaze-with-stack-protect.c b/gdb/features/microblaze-with-stack-protect.c index e5c0956610a..a3e75d123a2 100644 --- a/gdb/features/microblaze-with-stack-protect.c +++ b/gdb/features/microblaze-with-stack-protect.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_microblaze_with_stack_protect; +const_target_desc_up tdesc_microblaze_with_stack_protect; static void initialize_tdesc_microblaze_with_stack_protect (void) { @@ -74,5 +74,5 @@ initialize_tdesc_microblaze_with_stack_protect (void) tdesc_create_reg (feature, "rslr", 57, 1, NULL, 32, "int"); tdesc_create_reg (feature, "rshr", 58, 1, NULL, 32, "int"); - tdesc_microblaze_with_stack_protect = result.release (); + tdesc_microblaze_with_stack_protect = std::move (result); } diff --git a/gdb/features/microblaze.c b/gdb/features/microblaze.c index 32ae3b02ad7..fe367f3b82f 100644 --- a/gdb/features/microblaze.c +++ b/gdb/features/microblaze.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_microblaze; +const_target_desc_up tdesc_microblaze; static void initialize_tdesc_microblaze (void) { @@ -70,5 +70,5 @@ initialize_tdesc_microblaze (void) tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int"); tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int"); - tdesc_microblaze = result.release (); + tdesc_microblaze = std::move (result); } diff --git a/gdb/features/mips-dsp-linux.c b/gdb/features/mips-dsp-linux.c index 4873037b69d..62771b72b94 100644 --- a/gdb/features/mips-dsp-linux.c +++ b/gdb/features/mips-dsp-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_mips_dsp_linux; +const_target_desc_up tdesc_mips_dsp_linux; static void initialize_tdesc_mips_dsp_linux (void) { @@ -105,5 +105,5 @@ initialize_tdesc_mips_dsp_linux (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.mips.linux"); tdesc_create_reg (feature, "restart", 79, 1, "system", 32, "int"); - tdesc_mips_dsp_linux = result.release (); + tdesc_mips_dsp_linux = std::move (result); } diff --git a/gdb/features/mips-linux.c b/gdb/features/mips-linux.c index 5ff2e5fb92d..ae668ae6ac9 100644 --- a/gdb/features/mips-linux.c +++ b/gdb/features/mips-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_mips_linux; +const_target_desc_up tdesc_mips_linux; static void initialize_tdesc_mips_linux (void) { @@ -96,5 +96,5 @@ initialize_tdesc_mips_linux (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.mips.linux"); tdesc_create_reg (feature, "restart", 72, 1, "system", 32, "int"); - tdesc_mips_linux = result.release (); + tdesc_mips_linux = std::move (result); } diff --git a/gdb/features/mips64-dsp-linux.c b/gdb/features/mips64-dsp-linux.c index 646f5487f49..f186394ebb9 100644 --- a/gdb/features/mips64-dsp-linux.c +++ b/gdb/features/mips64-dsp-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_mips64_dsp_linux; +const_target_desc_up tdesc_mips64_dsp_linux; static void initialize_tdesc_mips64_dsp_linux (void) { @@ -105,5 +105,5 @@ initialize_tdesc_mips64_dsp_linux (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.mips.linux"); tdesc_create_reg (feature, "restart", 79, 1, "system", 64, "int"); - tdesc_mips64_dsp_linux = result.release (); + tdesc_mips64_dsp_linux = std::move (result); } diff --git a/gdb/features/mips64-linux.c b/gdb/features/mips64-linux.c index 98b3d34448d..168b8d83477 100644 --- a/gdb/features/mips64-linux.c +++ b/gdb/features/mips64-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_mips64_linux; +const_target_desc_up tdesc_mips64_linux; static void initialize_tdesc_mips64_linux (void) { @@ -96,5 +96,5 @@ initialize_tdesc_mips64_linux (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.mips.linux"); tdesc_create_reg (feature, "restart", 72, 1, "system", 64, "int"); - tdesc_mips64_linux = result.release (); + tdesc_mips64_linux = std::move (result); } diff --git a/gdb/features/nds32.c b/gdb/features/nds32.c index e5c5d50dce1..46e86ef0ed2 100644 --- a/gdb/features/nds32.c +++ b/gdb/features/nds32.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_nds32; +const_target_desc_up tdesc_nds32; static void initialize_tdesc_nds32 (void) { @@ -87,5 +87,5 @@ initialize_tdesc_nds32 (void) tdesc_create_reg (feature, "itb", 66, 1, NULL, 32, "int"); tdesc_create_reg (feature, "ifc_lp", 67, 1, NULL, 32, "int"); - tdesc_nds32 = result.release (); + tdesc_nds32 = std::move (result); } diff --git a/gdb/features/or1k-linux.c b/gdb/features/or1k-linux.c index 85a681f89ba..51e8412cd5c 100644 --- a/gdb/features/or1k-linux.c +++ b/gdb/features/or1k-linux.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_or1k_linux; +const_target_desc_up tdesc_or1k_linux; static void initialize_tdesc_or1k_linux (void) { @@ -73,5 +73,5 @@ initialize_tdesc_or1k_linux (void) tdesc_create_reg (feature, "npc", 33, 1, NULL, 32, "code_ptr"); tdesc_create_reg (feature, "sr", 34, 1, NULL, 32, "sr_flags"); - tdesc_or1k_linux = result.release (); + tdesc_or1k_linux = std::move (result); } diff --git a/gdb/features/or1k.c b/gdb/features/or1k.c index ee5e2f5b206..2a62e72837c 100644 --- a/gdb/features/or1k.c +++ b/gdb/features/or1k.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_or1k; +const_target_desc_up tdesc_or1k; static void initialize_tdesc_or1k (void) { @@ -71,5 +71,5 @@ initialize_tdesc_or1k (void) tdesc_create_reg (feature, "npc", 33, 1, NULL, 32, "code_ptr"); tdesc_create_reg (feature, "sr", 34, 1, NULL, 32, "sr_flags"); - tdesc_or1k = result.release (); + tdesc_or1k = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-32.c b/gdb/features/rs6000/powerpc-32.c index 562761e69a5..9fc7e572e2f 100644 --- a/gdb/features/rs6000/powerpc-32.c +++ b/gdb/features/rs6000/powerpc-32.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_32; +const_target_desc_up tdesc_powerpc_32; static void initialize_tdesc_powerpc_32 (void) { @@ -88,5 +88,5 @@ initialize_tdesc_powerpc_32 (void) tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double"); tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int"); - tdesc_powerpc_32 = result.release (); + tdesc_powerpc_32 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-32l.c b/gdb/features/rs6000/powerpc-32l.c index caf81b76017..5e734af9f8d 100644 --- a/gdb/features/rs6000/powerpc-32l.c +++ b/gdb/features/rs6000/powerpc-32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_32l; +const_target_desc_up tdesc_powerpc_32l; static void initialize_tdesc_powerpc_32l (void) { @@ -92,5 +92,5 @@ initialize_tdesc_powerpc_32l (void) tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int"); tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int"); - tdesc_powerpc_32l = result.release (); + tdesc_powerpc_32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-403.c b/gdb/features/rs6000/powerpc-403.c index 7cff21ceed7..23c863669e9 100644 --- a/gdb/features/rs6000/powerpc-403.c +++ b/gdb/features/rs6000/powerpc-403.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_403; +const_target_desc_up tdesc_powerpc_403; static void initialize_tdesc_powerpc_403 (void) { @@ -162,5 +162,5 @@ initialize_tdesc_powerpc_403 (void) tdesc_create_reg (feature, "pbl2", 141, 1, NULL, 32, "int"); tdesc_create_reg (feature, "pbu2", 142, 1, NULL, 32, "int"); - tdesc_powerpc_403 = result.release (); + tdesc_powerpc_403 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-403gc.c b/gdb/features/rs6000/powerpc-403gc.c index e86b51c4346..6bba1400997 100644 --- a/gdb/features/rs6000/powerpc-403gc.c +++ b/gdb/features/rs6000/powerpc-403gc.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_403gc; +const_target_desc_up tdesc_powerpc_403gc; static void initialize_tdesc_powerpc_403gc (void) { @@ -168,5 +168,5 @@ initialize_tdesc_powerpc_403gc (void) tdesc_create_reg (feature, "tbhu", 147, 1, NULL, 32, "int"); tdesc_create_reg (feature, "tblu", 148, 1, NULL, 32, "int"); - tdesc_powerpc_403gc = result.release (); + tdesc_powerpc_403gc = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-405.c b/gdb/features/rs6000/powerpc-405.c index 2716e37d8a8..c55a4bcf12b 100644 --- a/gdb/features/rs6000/powerpc-405.c +++ b/gdb/features/rs6000/powerpc-405.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_405; +const_target_desc_up tdesc_powerpc_405; static void initialize_tdesc_powerpc_405 (void) { @@ -131,5 +131,5 @@ initialize_tdesc_powerpc_405 (void) tdesc_create_reg (feature, "su0r", 160, 1, NULL, 32, "int"); tdesc_create_reg (feature, "usprg0", 161, 1, NULL, 32, "int"); - tdesc_powerpc_405 = result.release (); + tdesc_powerpc_405 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-505.c b/gdb/features/rs6000/powerpc-505.c index 51352e78bac..e36043d51b0 100644 --- a/gdb/features/rs6000/powerpc-505.c +++ b/gdb/features/rs6000/powerpc-505.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_505; +const_target_desc_up tdesc_powerpc_505; static void initialize_tdesc_powerpc_505 (void) { @@ -141,5 +141,5 @@ initialize_tdesc_powerpc_505 (void) tdesc_create_reg (feature, "eid", 120, 1, NULL, 32, "int"); tdesc_create_reg (feature, "nri", 121, 1, NULL, 32, "int"); - tdesc_powerpc_505 = result.release (); + tdesc_powerpc_505 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-601.c b/gdb/features/rs6000/powerpc-601.c index 2b700bbe128..6cc502dc686 100644 --- a/gdb/features/rs6000/powerpc-601.c +++ b/gdb/features/rs6000/powerpc-601.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_601; +const_target_desc_up tdesc_powerpc_601; static void initialize_tdesc_powerpc_601 (void) { @@ -145,5 +145,5 @@ initialize_tdesc_powerpc_601 (void) tdesc_create_reg (feature, "rtcu", 125, 1, NULL, 32, "int"); tdesc_create_reg (feature, "rtcl", 126, 1, NULL, 32, "int"); - tdesc_powerpc_601 = result.release (); + tdesc_powerpc_601 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-602.c b/gdb/features/rs6000/powerpc-602.c index 13591b95302..6f9344115d8 100644 --- a/gdb/features/rs6000/powerpc-602.c +++ b/gdb/features/rs6000/powerpc-602.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_602; +const_target_desc_up tdesc_powerpc_602; static void initialize_tdesc_powerpc_602 (void) { @@ -148,5 +148,5 @@ initialize_tdesc_powerpc_602 (void) tdesc_create_reg (feature, "sp", 129, 1, NULL, 32, "int"); tdesc_create_reg (feature, "lt", 130, 1, NULL, 32, "int"); - tdesc_powerpc_602 = result.release (); + tdesc_powerpc_602 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-603.c b/gdb/features/rs6000/powerpc-603.c index 88b2b2c98c6..01f46bfff61 100644 --- a/gdb/features/rs6000/powerpc-603.c +++ b/gdb/features/rs6000/powerpc-603.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_603; +const_target_desc_up tdesc_powerpc_603; static void initialize_tdesc_powerpc_603 (void) { @@ -148,5 +148,5 @@ initialize_tdesc_powerpc_603 (void) tdesc_create_reg (feature, "icmp", 129, 1, NULL, 32, "int"); tdesc_create_reg (feature, "rpa", 130, 1, NULL, 32, "int"); - tdesc_powerpc_603 = result.release (); + tdesc_powerpc_603 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-604.c b/gdb/features/rs6000/powerpc-604.c index d266ba6ee89..0f332bcc163 100644 --- a/gdb/features/rs6000/powerpc-604.c +++ b/gdb/features/rs6000/powerpc-604.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_604; +const_target_desc_up tdesc_powerpc_604; static void initialize_tdesc_powerpc_604 (void) { @@ -147,5 +147,5 @@ initialize_tdesc_powerpc_604 (void) tdesc_create_reg (feature, "sia", 126, 1, NULL, 32, "int"); tdesc_create_reg (feature, "sda", 127, 1, NULL, 32, "int"); - tdesc_powerpc_604 = result.release (); + tdesc_powerpc_604 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-64.c b/gdb/features/rs6000/powerpc-64.c index c2f74109185..03f8195a6ae 100644 --- a/gdb/features/rs6000/powerpc-64.c +++ b/gdb/features/rs6000/powerpc-64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_64; +const_target_desc_up tdesc_powerpc_64; static void initialize_tdesc_powerpc_64 (void) { @@ -88,5 +88,5 @@ initialize_tdesc_powerpc_64 (void) tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double"); tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int"); - tdesc_powerpc_64 = result.release (); + tdesc_powerpc_64 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-64l.c b/gdb/features/rs6000/powerpc-64l.c index dbe06acdb20..3b863e62e3b 100644 --- a/gdb/features/rs6000/powerpc-64l.c +++ b/gdb/features/rs6000/powerpc-64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_64l; +const_target_desc_up tdesc_powerpc_64l; static void initialize_tdesc_powerpc_64l (void) { @@ -92,5 +92,5 @@ initialize_tdesc_powerpc_64l (void) tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int"); tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int"); - tdesc_powerpc_64l = result.release (); + tdesc_powerpc_64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-7400.c b/gdb/features/rs6000/powerpc-7400.c index f1f52eb51e6..6fdd2ef363e 100644 --- a/gdb/features/rs6000/powerpc-7400.c +++ b/gdb/features/rs6000/powerpc-7400.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_7400; +const_target_desc_up tdesc_powerpc_7400; static void initialize_tdesc_powerpc_7400 (void) { @@ -199,5 +199,5 @@ initialize_tdesc_powerpc_7400 (void) tdesc_create_reg (feature, "vscr", 151, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 152, 1, "vector", 32, "int"); - tdesc_powerpc_7400 = result.release (); + tdesc_powerpc_7400 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-750.c b/gdb/features/rs6000/powerpc-750.c index 14f49056590..fc61ad552f4 100644 --- a/gdb/features/rs6000/powerpc-750.c +++ b/gdb/features/rs6000/powerpc-750.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_750; +const_target_desc_up tdesc_powerpc_750; static void initialize_tdesc_powerpc_750 (void) { @@ -160,5 +160,5 @@ initialize_tdesc_powerpc_750 (void) tdesc_create_reg (feature, "thrm2", 141, 1, NULL, 32, "int"); tdesc_create_reg (feature, "thrm3", 142, 1, NULL, 32, "int"); - tdesc_powerpc_750 = result.release (); + tdesc_powerpc_750 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-860.c b/gdb/features/rs6000/powerpc-860.c index b02fcc4e357..5cb55107150 100644 --- a/gdb/features/rs6000/powerpc-860.c +++ b/gdb/features/rs6000/powerpc-860.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_860; +const_target_desc_up tdesc_powerpc_860; static void initialize_tdesc_powerpc_860 (void) { @@ -185,5 +185,5 @@ initialize_tdesc_powerpc_860 (void) tdesc_create_reg (feature, "md_dbram0", 164, 1, NULL, 32, "int"); tdesc_create_reg (feature, "md_dbram1", 165, 1, NULL, 32, "int"); - tdesc_powerpc_860 = result.release (); + tdesc_powerpc_860 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-altivec32.c b/gdb/features/rs6000/powerpc-altivec32.c index 05f7348df9a..d683591e8c4 100644 --- a/gdb/features/rs6000/powerpc-altivec32.c +++ b/gdb/features/rs6000/powerpc-altivec32.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_altivec32; +const_target_desc_up tdesc_powerpc_altivec32; static void initialize_tdesc_powerpc_altivec32 (void) { @@ -151,5 +151,5 @@ initialize_tdesc_powerpc_altivec32 (void) tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int"); - tdesc_powerpc_altivec32 = result.release (); + tdesc_powerpc_altivec32 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c index 0bcae972502..3670597daae 100644 --- a/gdb/features/rs6000/powerpc-altivec32l.c +++ b/gdb/features/rs6000/powerpc-altivec32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_altivec32l; +const_target_desc_up tdesc_powerpc_altivec32l; static void initialize_tdesc_powerpc_altivec32l (void) { @@ -155,5 +155,5 @@ initialize_tdesc_powerpc_altivec32l (void) tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int"); - tdesc_powerpc_altivec32l = result.release (); + tdesc_powerpc_altivec32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-altivec64.c b/gdb/features/rs6000/powerpc-altivec64.c index bdc50004391..4f720b774d8 100644 --- a/gdb/features/rs6000/powerpc-altivec64.c +++ b/gdb/features/rs6000/powerpc-altivec64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_altivec64; +const_target_desc_up tdesc_powerpc_altivec64; static void initialize_tdesc_powerpc_altivec64 (void) { @@ -151,5 +151,5 @@ initialize_tdesc_powerpc_altivec64 (void) tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int"); - tdesc_powerpc_altivec64 = result.release (); + tdesc_powerpc_altivec64 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c index 2392f349657..9df0d53c4f9 100644 --- a/gdb/features/rs6000/powerpc-altivec64l.c +++ b/gdb/features/rs6000/powerpc-altivec64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_altivec64l; +const_target_desc_up tdesc_powerpc_altivec64l; static void initialize_tdesc_powerpc_altivec64l (void) { @@ -155,5 +155,5 @@ initialize_tdesc_powerpc_altivec64l (void) tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int"); - tdesc_powerpc_altivec64l = result.release (); + tdesc_powerpc_altivec64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-e500.c b/gdb/features/rs6000/powerpc-e500.c index 0442569c318..81be763087e 100644 --- a/gdb/features/rs6000/powerpc-e500.c +++ b/gdb/features/rs6000/powerpc-e500.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_e500; +const_target_desc_up tdesc_powerpc_e500; static void initialize_tdesc_powerpc_e500 (void) { @@ -89,5 +89,5 @@ initialize_tdesc_powerpc_e500 (void) tdesc_create_reg (feature, "acc", 73, 1, NULL, 64, "int"); tdesc_create_reg (feature, "spefscr", 74, 1, NULL, 32, "int"); - tdesc_powerpc_e500 = result.release (); + tdesc_powerpc_e500 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-e500l.c b/gdb/features/rs6000/powerpc-e500l.c index 4e426c3005a..7803ff76f13 100644 --- a/gdb/features/rs6000/powerpc-e500l.c +++ b/gdb/features/rs6000/powerpc-e500l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_e500l; +const_target_desc_up tdesc_powerpc_e500l; static void initialize_tdesc_powerpc_e500l (void) { @@ -93,5 +93,5 @@ initialize_tdesc_powerpc_e500l (void) tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int"); tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int"); - tdesc_powerpc_e500l = result.release (); + tdesc_powerpc_e500l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-32l.c b/gdb/features/rs6000/powerpc-isa205-32l.c index 3834c980019..a6f2b900dc5 100644 --- a/gdb/features/rs6000/powerpc-isa205-32l.c +++ b/gdb/features/rs6000/powerpc-isa205-32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_32l; +const_target_desc_up tdesc_powerpc_isa205_32l; static void initialize_tdesc_powerpc_isa205_32l (void) { @@ -92,5 +92,5 @@ initialize_tdesc_powerpc_isa205_32l (void) tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int"); tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int"); - tdesc_powerpc_isa205_32l = result.release (); + tdesc_powerpc_isa205_32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-64l.c b/gdb/features/rs6000/powerpc-isa205-64l.c index 9a3621877c0..f9d8de03994 100644 --- a/gdb/features/rs6000/powerpc-isa205-64l.c +++ b/gdb/features/rs6000/powerpc-isa205-64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_64l; +const_target_desc_up tdesc_powerpc_isa205_64l; static void initialize_tdesc_powerpc_isa205_64l (void) { @@ -92,5 +92,5 @@ initialize_tdesc_powerpc_isa205_64l (void) tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int"); tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int"); - tdesc_powerpc_isa205_64l = result.release (); + tdesc_powerpc_isa205_64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c index e42e1b92297..bb1b5d97274 100644 --- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c +++ b/gdb/features/rs6000/powerpc-isa205-altivec32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_altivec32l; +const_target_desc_up tdesc_powerpc_isa205_altivec32l; static void initialize_tdesc_powerpc_isa205_altivec32l (void) { @@ -155,5 +155,5 @@ initialize_tdesc_powerpc_isa205_altivec32l (void) tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int"); - tdesc_powerpc_isa205_altivec32l = result.release (); + tdesc_powerpc_isa205_altivec32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c index dc43206a9d3..59ab1f8bef6 100644 --- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c +++ b/gdb/features/rs6000/powerpc-isa205-altivec64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_altivec64l; +const_target_desc_up tdesc_powerpc_isa205_altivec64l; static void initialize_tdesc_powerpc_isa205_altivec64l (void) { @@ -155,5 +155,5 @@ initialize_tdesc_powerpc_isa205_altivec64l (void) tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int"); tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int"); - tdesc_powerpc_isa205_altivec64l = result.release (); + tdesc_powerpc_isa205_altivec64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c index acc1c5b9a3e..5108cf7eea8 100644 --- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c +++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l; +const_target_desc_up tdesc_powerpc_isa205_ppr_dscr_vsx32l; static void initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l (void) { @@ -195,5 +195,5 @@ initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.power.dscr"); tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64"); - tdesc_powerpc_isa205_ppr_dscr_vsx32l = result.release (); + tdesc_powerpc_isa205_ppr_dscr_vsx32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c index 6bfe08d4cb5..15458dd726f 100644 --- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c +++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l; +const_target_desc_up tdesc_powerpc_isa205_ppr_dscr_vsx64l; static void initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l (void) { @@ -195,5 +195,5 @@ initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.power.dscr"); tdesc_create_reg (feature, "dscr", 140, 1, NULL, 64, "uint64"); - tdesc_powerpc_isa205_ppr_dscr_vsx64l = result.release (); + tdesc_powerpc_isa205_ppr_dscr_vsx64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c index b3f40b9d009..794bcac37d7 100644 --- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c +++ b/gdb/features/rs6000/powerpc-isa205-vsx32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_vsx32l; +const_target_desc_up tdesc_powerpc_isa205_vsx32l; static void initialize_tdesc_powerpc_isa205_vsx32l (void) { @@ -189,5 +189,5 @@ initialize_tdesc_powerpc_isa205_vsx32l (void) tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64"); - tdesc_powerpc_isa205_vsx32l = result.release (); + tdesc_powerpc_isa205_vsx32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c index 5f548176701..2de0e9bfd04 100644 --- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c +++ b/gdb/features/rs6000/powerpc-isa205-vsx64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa205_vsx64l; +const_target_desc_up tdesc_powerpc_isa205_vsx64l; static void initialize_tdesc_powerpc_isa205_vsx64l (void) { @@ -189,5 +189,5 @@ initialize_tdesc_powerpc_isa205_vsx64l (void) tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64"); - tdesc_powerpc_isa205_vsx64l = result.release (); + tdesc_powerpc_isa205_vsx64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c index b9dfd309215..72153b84e03 100644 --- a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c +++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l; +const_target_desc_up tdesc_powerpc_isa207_htm_vsx32l; static void initialize_tdesc_powerpc_isa207_htm_vsx32l (void) { @@ -391,5 +391,5 @@ initialize_tdesc_powerpc_isa207_htm_vsx32l (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.power.htm.tar"); tdesc_create_reg (feature, "ctar", 290, 0, NULL, 64, "uint64"); - tdesc_powerpc_isa207_htm_vsx32l = result.release (); + tdesc_powerpc_isa207_htm_vsx32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c index 14a911b30aa..18753f2ddfd 100644 --- a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c +++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l; +const_target_desc_up tdesc_powerpc_isa207_htm_vsx64l; static void initialize_tdesc_powerpc_isa207_htm_vsx64l (void) { @@ -391,5 +391,5 @@ initialize_tdesc_powerpc_isa207_htm_vsx64l (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.power.htm.tar"); tdesc_create_reg (feature, "ctar", 290, 0, NULL, 64, "uint64"); - tdesc_powerpc_isa207_htm_vsx64l = result.release (); + tdesc_powerpc_isa207_htm_vsx64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-vsx32l.c index bcfa7c175b8..d31a3309dbe 100644 --- a/gdb/features/rs6000/powerpc-isa207-vsx32l.c +++ b/gdb/features/rs6000/powerpc-isa207-vsx32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa207_vsx32l; +const_target_desc_up tdesc_powerpc_isa207_vsx32l; static void initialize_tdesc_powerpc_isa207_vsx32l (void) { @@ -210,5 +210,5 @@ initialize_tdesc_powerpc_isa207_vsx32l (void) tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64"); tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64"); - tdesc_powerpc_isa207_vsx32l = result.release (); + tdesc_powerpc_isa207_vsx32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-vsx64l.c index 43bd6e58455..308bf545f54 100644 --- a/gdb/features/rs6000/powerpc-isa207-vsx64l.c +++ b/gdb/features/rs6000/powerpc-isa207-vsx64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_isa207_vsx64l; +const_target_desc_up tdesc_powerpc_isa207_vsx64l; static void initialize_tdesc_powerpc_isa207_vsx64l (void) { @@ -210,5 +210,5 @@ initialize_tdesc_powerpc_isa207_vsx64l (void) tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64"); tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64"); - tdesc_powerpc_isa207_vsx64l = result.release (); + tdesc_powerpc_isa207_vsx64l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-vsx32.c b/gdb/features/rs6000/powerpc-vsx32.c index 6d60eca340f..5e82c3db313 100644 --- a/gdb/features/rs6000/powerpc-vsx32.c +++ b/gdb/features/rs6000/powerpc-vsx32.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_vsx32; +const_target_desc_up tdesc_powerpc_vsx32; static void initialize_tdesc_powerpc_vsx32 (void) { @@ -185,5 +185,5 @@ initialize_tdesc_powerpc_vsx32 (void) tdesc_create_reg (feature, "vs30h", 135, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 136, 1, NULL, 64, "uint64"); - tdesc_powerpc_vsx32 = result.release (); + tdesc_powerpc_vsx32 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c index cf233134978..6294ba4b776 100644 --- a/gdb/features/rs6000/powerpc-vsx32l.c +++ b/gdb/features/rs6000/powerpc-vsx32l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_vsx32l; +const_target_desc_up tdesc_powerpc_vsx32l; static void initialize_tdesc_powerpc_vsx32l (void) { @@ -189,5 +189,5 @@ initialize_tdesc_powerpc_vsx32l (void) tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64"); - tdesc_powerpc_vsx32l = result.release (); + tdesc_powerpc_vsx32l = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-vsx64.c b/gdb/features/rs6000/powerpc-vsx64.c index a5baaa2dfdc..cddd8920439 100644 --- a/gdb/features/rs6000/powerpc-vsx64.c +++ b/gdb/features/rs6000/powerpc-vsx64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_vsx64; +const_target_desc_up tdesc_powerpc_vsx64; static void initialize_tdesc_powerpc_vsx64 (void) { @@ -185,5 +185,5 @@ initialize_tdesc_powerpc_vsx64 (void) tdesc_create_reg (feature, "vs30h", 135, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 136, 1, NULL, 64, "uint64"); - tdesc_powerpc_vsx64 = result.release (); + tdesc_powerpc_vsx64 = std::move (result); } diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c index 03d2b694b7d..c6deea9d2c2 100644 --- a/gdb/features/rs6000/powerpc-vsx64l.c +++ b/gdb/features/rs6000/powerpc-vsx64l.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_powerpc_vsx64l; +const_target_desc_up tdesc_powerpc_vsx64l; static void initialize_tdesc_powerpc_vsx64l (void) { @@ -189,5 +189,5 @@ initialize_tdesc_powerpc_vsx64l (void) tdesc_create_reg (feature, "vs30h", 137, 1, NULL, 64, "uint64"); tdesc_create_reg (feature, "vs31h", 138, 1, NULL, 64, "uint64"); - tdesc_powerpc_vsx64l = result.release (); + tdesc_powerpc_vsx64l = std::move (result); } diff --git a/gdb/features/rs6000/rs6000.c b/gdb/features/rs6000/rs6000.c index 210dd96e4f6..cee13f9b2ea 100644 --- a/gdb/features/rs6000/rs6000.c +++ b/gdb/features/rs6000/rs6000.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_rs6000; +const_target_desc_up tdesc_rs6000; static void initialize_tdesc_rs6000 (void) { @@ -89,5 +89,5 @@ initialize_tdesc_rs6000 (void) tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double"); tdesc_create_reg (feature, "fpscr", 71, 1, "float", 32, "int"); - tdesc_rs6000 = result.release (); + tdesc_rs6000 = std::move (result); } diff --git a/gdb/features/rx.c b/gdb/features/rx.c index f9a5584f9b8..44023fe26fe 100644 --- a/gdb/features/rx.c +++ b/gdb/features/rx.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_rx; +const_target_desc_up tdesc_rx; static void initialize_tdesc_rx (void) { @@ -75,5 +75,5 @@ initialize_tdesc_rx (void) tdesc_create_reg (feature, "fpsw", 24, 1, NULL, 32, "fpsw_flags"); tdesc_create_reg (feature, "acc", 25, 1, NULL, 64, "uint64"); - tdesc_rx = result.release (); + tdesc_rx = std::move (result); } diff --git a/gdb/features/s390-gs-linux64.c b/gdb/features/s390-gs-linux64.c index ab6ad6f21e3..b3d22806ac2 100644 --- a/gdb/features/s390-gs-linux64.c +++ b/gdb/features/s390-gs-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_gs_linux64; +const_target_desc_up tdesc_s390_gs_linux64; static void initialize_tdesc_s390_gs_linux64 (void) { @@ -196,5 +196,5 @@ initialize_tdesc_s390_gs_linux64 (void) tdesc_create_reg (feature, "bc_gssm", 126, 1, "gs", 64, "uint64"); tdesc_create_reg (feature, "bc_gsepla", 127, 1, "gs", 64, "data_ptr"); - tdesc_s390_gs_linux64 = result.release (); + tdesc_s390_gs_linux64 = std::move (result); } diff --git a/gdb/features/s390-linux32.c b/gdb/features/s390-linux32.c index e45321a2099..62b4b53ae98 100644 --- a/gdb/features/s390-linux32.c +++ b/gdb/features/s390-linux32.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux32; +const_target_desc_up tdesc_s390_linux32; static void initialize_tdesc_s390_linux32 (void) { @@ -75,5 +75,5 @@ initialize_tdesc_s390_linux32 (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.s390.linux"); tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 32, "uint32"); - tdesc_s390_linux32 = result.release (); + tdesc_s390_linux32 = std::move (result); } diff --git a/gdb/features/s390-linux32v1.c b/gdb/features/s390-linux32v1.c index cea14c16969..cef4dcb2887 100644 --- a/gdb/features/s390-linux32v1.c +++ b/gdb/features/s390-linux32v1.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux32v1; +const_target_desc_up tdesc_s390_linux32v1; static void initialize_tdesc_s390_linux32v1 (void) { @@ -76,5 +76,5 @@ initialize_tdesc_s390_linux32v1 (void) tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 32, "uint32"); tdesc_create_reg (feature, "last_break", 52, 0, "system", 32, "code_ptr"); - tdesc_s390_linux32v1 = result.release (); + tdesc_s390_linux32v1 = std::move (result); } diff --git a/gdb/features/s390-linux32v2.c b/gdb/features/s390-linux32v2.c index 182ab2f0b60..35498b2a275 100644 --- a/gdb/features/s390-linux32v2.c +++ b/gdb/features/s390-linux32v2.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux32v2; +const_target_desc_up tdesc_s390_linux32v2; static void initialize_tdesc_s390_linux32v2 (void) { @@ -77,5 +77,5 @@ initialize_tdesc_s390_linux32v2 (void) tdesc_create_reg (feature, "last_break", 52, 0, "system", 32, "code_ptr"); tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32"); - tdesc_s390_linux32v2 = result.release (); + tdesc_s390_linux32v2 = std::move (result); } diff --git a/gdb/features/s390-linux64.c b/gdb/features/s390-linux64.c index 8bcec095174..2a9f16bb40c 100644 --- a/gdb/features/s390-linux64.c +++ b/gdb/features/s390-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux64; +const_target_desc_up tdesc_s390_linux64; static void initialize_tdesc_s390_linux64 (void) { @@ -91,5 +91,5 @@ initialize_tdesc_s390_linux64 (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.s390.linux"); tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32"); - tdesc_s390_linux64 = result.release (); + tdesc_s390_linux64 = std::move (result); } diff --git a/gdb/features/s390-linux64v1.c b/gdb/features/s390-linux64v1.c index 3a6394b513d..ff592c318e2 100644 --- a/gdb/features/s390-linux64v1.c +++ b/gdb/features/s390-linux64v1.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux64v1; +const_target_desc_up tdesc_s390_linux64v1; static void initialize_tdesc_s390_linux64v1 (void) { @@ -92,5 +92,5 @@ initialize_tdesc_s390_linux64v1 (void) tdesc_create_reg (feature, "orig_r2", 67, 1, "system", 32, "uint32"); tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr"); - tdesc_s390_linux64v1 = result.release (); + tdesc_s390_linux64v1 = std::move (result); } diff --git a/gdb/features/s390-linux64v2.c b/gdb/features/s390-linux64v2.c index 5ff9a5709ef..0e1daad1475 100644 --- a/gdb/features/s390-linux64v2.c +++ b/gdb/features/s390-linux64v2.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_linux64v2; +const_target_desc_up tdesc_s390_linux64v2; static void initialize_tdesc_s390_linux64v2 (void) { @@ -93,5 +93,5 @@ initialize_tdesc_s390_linux64v2 (void) tdesc_create_reg (feature, "last_break", 68, 0, "system", 32, "code_ptr"); tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32"); - tdesc_s390_linux64v2 = result.release (); + tdesc_s390_linux64v2 = std::move (result); } diff --git a/gdb/features/s390-te-linux64.c b/gdb/features/s390-te-linux64.c index 2abddd53bfa..5a03beb1750 100644 --- a/gdb/features/s390-te-linux64.c +++ b/gdb/features/s390-te-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_te_linux64; +const_target_desc_up tdesc_s390_te_linux64; static void initialize_tdesc_s390_te_linux64 (void) { @@ -115,5 +115,5 @@ initialize_tdesc_s390_te_linux64 (void) tdesc_create_reg (feature, "tr14", 88, 1, "tdb", 64, "uint64"); tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64"); - tdesc_s390_te_linux64 = result.release (); + tdesc_s390_te_linux64 = std::move (result); } diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c index 8e38a5cf81f..47954109719 100644 --- a/gdb/features/s390-tevx-linux64.c +++ b/gdb/features/s390-tevx-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_tevx_linux64; +const_target_desc_up tdesc_s390_tevx_linux64; static void initialize_tdesc_s390_tevx_linux64 (void) { @@ -186,5 +186,5 @@ initialize_tdesc_s390_tevx_linux64 (void) tdesc_create_reg (feature, "v30", 120, 1, NULL, 128, "vec128"); tdesc_create_reg (feature, "v31", 121, 1, NULL, 128, "vec128"); - tdesc_s390_tevx_linux64 = result.release (); + tdesc_s390_tevx_linux64 = std::move (result); } diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c index 1ce5ad3671a..a4c523897d2 100644 --- a/gdb/features/s390-vx-linux64.c +++ b/gdb/features/s390-vx-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390_vx_linux64; +const_target_desc_up tdesc_s390_vx_linux64; static void initialize_tdesc_s390_vx_linux64 (void) { @@ -164,5 +164,5 @@ initialize_tdesc_s390_vx_linux64 (void) tdesc_create_reg (feature, "v30", 100, 1, NULL, 128, "vec128"); tdesc_create_reg (feature, "v31", 101, 1, NULL, 128, "vec128"); - tdesc_s390_vx_linux64 = result.release (); + tdesc_s390_vx_linux64 = std::move (result); } diff --git a/gdb/features/s390x-gs-linux64.c b/gdb/features/s390x-gs-linux64.c index 76b8124863a..35626366ff1 100644 --- a/gdb/features/s390x-gs-linux64.c +++ b/gdb/features/s390x-gs-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_gs_linux64; +const_target_desc_up tdesc_s390x_gs_linux64; static void initialize_tdesc_s390x_gs_linux64 (void) { @@ -180,5 +180,5 @@ initialize_tdesc_s390x_gs_linux64 (void) tdesc_create_reg (feature, "bc_gssm", 110, 1, "gs", 64, "uint64"); tdesc_create_reg (feature, "bc_gsepla", 111, 1, "gs", 64, "data_ptr"); - tdesc_s390x_gs_linux64 = result.release (); + tdesc_s390x_gs_linux64 = std::move (result); } diff --git a/gdb/features/s390x-linux64.c b/gdb/features/s390x-linux64.c index eb6b181f599..3ccc2574a51 100644 --- a/gdb/features/s390x-linux64.c +++ b/gdb/features/s390x-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_linux64; +const_target_desc_up tdesc_s390x_linux64; static void initialize_tdesc_s390x_linux64 (void) { @@ -75,5 +75,5 @@ initialize_tdesc_s390x_linux64 (void) feature = tdesc_create_feature (result.get (), "org.gnu.gdb.s390.linux"); tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64"); - tdesc_s390x_linux64 = result.release (); + tdesc_s390x_linux64 = std::move (result); } diff --git a/gdb/features/s390x-linux64v1.c b/gdb/features/s390x-linux64v1.c index 6b43f88ac84..efda35e3aef 100644 --- a/gdb/features/s390x-linux64v1.c +++ b/gdb/features/s390x-linux64v1.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_linux64v1; +const_target_desc_up tdesc_s390x_linux64v1; static void initialize_tdesc_s390x_linux64v1 (void) { @@ -76,5 +76,5 @@ initialize_tdesc_s390x_linux64v1 (void) tdesc_create_reg (feature, "orig_r2", 51, 1, "system", 64, "uint64"); tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr"); - tdesc_s390x_linux64v1 = result.release (); + tdesc_s390x_linux64v1 = std::move (result); } diff --git a/gdb/features/s390x-linux64v2.c b/gdb/features/s390x-linux64v2.c index eeba787ec7b..1a7ea9dc489 100644 --- a/gdb/features/s390x-linux64v2.c +++ b/gdb/features/s390x-linux64v2.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_linux64v2; +const_target_desc_up tdesc_s390x_linux64v2; static void initialize_tdesc_s390x_linux64v2 (void) { @@ -77,5 +77,5 @@ initialize_tdesc_s390x_linux64v2 (void) tdesc_create_reg (feature, "last_break", 52, 0, "system", 64, "code_ptr"); tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32"); - tdesc_s390x_linux64v2 = result.release (); + tdesc_s390x_linux64v2 = std::move (result); } diff --git a/gdb/features/s390x-te-linux64.c b/gdb/features/s390x-te-linux64.c index 0fec2b0bd02..b6b61a05b4d 100644 --- a/gdb/features/s390x-te-linux64.c +++ b/gdb/features/s390x-te-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_te_linux64; +const_target_desc_up tdesc_s390x_te_linux64; static void initialize_tdesc_s390x_te_linux64 (void) { @@ -99,5 +99,5 @@ initialize_tdesc_s390x_te_linux64 (void) tdesc_create_reg (feature, "tr14", 72, 1, "tdb", 64, "uint64"); tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64"); - tdesc_s390x_te_linux64 = result.release (); + tdesc_s390x_te_linux64 = std::move (result); } diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c index c1b890045d3..104e467df9d 100644 --- a/gdb/features/s390x-tevx-linux64.c +++ b/gdb/features/s390x-tevx-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_tevx_linux64; +const_target_desc_up tdesc_s390x_tevx_linux64; static void initialize_tdesc_s390x_tevx_linux64 (void) { @@ -170,5 +170,5 @@ initialize_tdesc_s390x_tevx_linux64 (void) tdesc_create_reg (feature, "v30", 104, 1, NULL, 128, "vec128"); tdesc_create_reg (feature, "v31", 105, 1, NULL, 128, "vec128"); - tdesc_s390x_tevx_linux64 = result.release (); + tdesc_s390x_tevx_linux64 = std::move (result); } diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c index af57e052eab..af0ac984fcb 100644 --- a/gdb/features/s390x-vx-linux64.c +++ b/gdb/features/s390x-vx-linux64.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_s390x_vx_linux64; +const_target_desc_up tdesc_s390x_vx_linux64; static void initialize_tdesc_s390x_vx_linux64 (void) { @@ -148,5 +148,5 @@ initialize_tdesc_s390x_vx_linux64 (void) tdesc_create_reg (feature, "v30", 84, 1, NULL, 128, "vec128"); tdesc_create_reg (feature, "v31", 85, 1, NULL, 128, "vec128"); - tdesc_s390x_vx_linux64 = result.release (); + tdesc_s390x_vx_linux64 = std::move (result); } diff --git a/gdb/features/sparc/sparc32-solaris.c b/gdb/features/sparc/sparc32-solaris.c index 70affdbc5b5..c46175bc8c3 100644 --- a/gdb/features/sparc/sparc32-solaris.c +++ b/gdb/features/sparc/sparc32-solaris.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_sparc32_solaris; +const_target_desc_up tdesc_sparc32_solaris; static void initialize_tdesc_sparc32_solaris (void) { @@ -93,5 +93,5 @@ initialize_tdesc_sparc32_solaris (void) tdesc_create_reg (feature, "f30", 62, 1, NULL, 32, "ieee_single"); tdesc_create_reg (feature, "f31", 63, 1, NULL, 32, "ieee_single"); - tdesc_sparc32_solaris = result.release (); + tdesc_sparc32_solaris = std::move (result); } diff --git a/gdb/features/sparc/sparc64-solaris.c b/gdb/features/sparc/sparc64-solaris.c index 98edabe3864..40c83f93fe7 100644 --- a/gdb/features/sparc/sparc64-solaris.c +++ b/gdb/features/sparc/sparc64-solaris.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_sparc64_solaris; +const_target_desc_up tdesc_sparc64_solaris; static void initialize_tdesc_sparc64_solaris (void) { @@ -107,5 +107,5 @@ initialize_tdesc_sparc64_solaris (void) tdesc_create_reg (feature, "f60", 78, 1, NULL, 64, "ieee_double"); tdesc_create_reg (feature, "f62", 79, 1, NULL, 64, "ieee_double"); - tdesc_sparc64_solaris = result.release (); + tdesc_sparc64_solaris = std::move (result); } diff --git a/gdb/features/z80.c b/gdb/features/z80.c index 627649cc690..6cf38ffb9e4 100644 --- a/gdb/features/z80.c +++ b/gdb/features/z80.c @@ -4,7 +4,7 @@ #include "osabi.h" #include "target-descriptions.h" -const struct target_desc *tdesc_z80; +const_target_desc_up tdesc_z80; static void initialize_tdesc_z80 (void) { @@ -39,5 +39,5 @@ initialize_tdesc_z80 (void) tdesc_create_reg (feature, "hl'", 11, 1, NULL, 16, "data_ptr"); tdesc_create_reg (feature, "ir", 12, 1, NULL, 16, "uint16"); - tdesc_z80 = result.release (); + tdesc_z80 = std::move (result); } diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 8996b80f5bc..a4eee1e9869 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -9116,25 +9116,25 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* See i386-tdep.h. */ -const struct target_desc * +const target_desc * i386_target_description (uint64_t xstate_bv, bool segments) { - static target_desc *i386_tdescs \ + static const_target_desc_up i386_tdescs \ [2/*SSE*/][2/*AVX*/][2/*AVX512*/][2/*PKRU*/][2/*CET_U*/] \ [2/*segments*/] = {}; - target_desc **tdesc; - tdesc = &i386_tdescs[(xstate_bv & X86_XSTATE_SSE) ? 1 : 0] - [(xstate_bv & X86_XSTATE_AVX) ? 1 : 0] - [(xstate_bv & X86_XSTATE_AVX512) ? 1 : 0] - [(xstate_bv & X86_XSTATE_PKRU) ? 1 : 0] - [(xstate_bv & X86_XSTATE_CET_U) ? 1 : 0] - [segments ? 1 : 0]; + const_target_desc_up &tdesc + = i386_tdescs[(xstate_bv & X86_XSTATE_SSE) ? 1 : 0] + [(xstate_bv & X86_XSTATE_AVX) ? 1 : 0] + [(xstate_bv & X86_XSTATE_AVX512) ? 1 : 0] + [(xstate_bv & X86_XSTATE_PKRU) ? 1 : 0] + [(xstate_bv & X86_XSTATE_CET_U) ? 1 : 0] + [segments ? 1 : 0]; - if (*tdesc == NULL) - *tdesc = i386_create_target_description (xstate_bv, false, segments); + if (tdesc == nullptr) + tdesc = i386_create_target_description (xstate_bv, false, segments); - return *tdesc; + return tdesc.get (); } INIT_GDB_FILE (i386_tdep) diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c index f4ab2ec595f..3ee33721819 100644 --- a/gdb/microblaze-tdep.c +++ b/gdb/microblaze-tdep.c @@ -711,11 +711,11 @@ microblaze_register_g_packet_guesses (struct gdbarch *gdbarch) { register_remote_g_packet_guess (gdbarch, 4 * MICROBLAZE_NUM_CORE_REGS, - tdesc_microblaze); + tdesc_microblaze.get ()); register_remote_g_packet_guess (gdbarch, 4 * MICROBLAZE_NUM_REGS, - tdesc_microblaze_with_stack_protect); + tdesc_microblaze_with_stack_protect.get ()); } static struct gdbarch * @@ -729,7 +729,7 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) if (arches != NULL) return arches->gdbarch; if (tdesc == NULL) - tdesc = tdesc_microblaze; + tdesc = tdesc_microblaze.get (); /* Check any target description for validity. */ if (tdesc_has_registers (tdesc)) diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c index b90b546f572..a26ae039cfa 100644 --- a/gdb/mips-linux-nat.c +++ b/gdb/mips-linux-nat.c @@ -459,7 +459,8 @@ mips_linux_nat_target::read_description () { /* Assume no DSP if there is no inferior to inspect with ptrace. */ if (inferior_ptid == null_ptid) - return _MIPS_SIM == _ABIO32 ? tdesc_mips_linux : tdesc_mips64_linux; + return (_MIPS_SIM == _ABIO32 + ? tdesc_mips_linux : tdesc_mips64_linux).get (); int tid = get_ptrace_pid (inferior_ptid); @@ -482,9 +483,9 @@ mips_linux_nat_target::read_description () /* Report that target registers are a size we know for sure that we can get from ptrace. */ if (_MIPS_SIM == _ABIO32) - return have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux; + return (have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux).get (); else - return have_dsp ? tdesc_mips64_dsp_linux : tdesc_mips64_linux; + return (have_dsp ? tdesc_mips64_dsp_linux : tdesc_mips64_linux).get (); } /* -1 if the kernel and/or CPU do not support watch registers. diff --git a/gdb/mips-linux-tdep.h b/gdb/mips-linux-tdep.h index 362c1488c5f..7e5ec9f4d08 100644 --- a/gdb/mips-linux-tdep.h +++ b/gdb/mips-linux-tdep.h @@ -20,6 +20,8 @@ #ifndef GDB_MIPS_LINUX_TDEP_H #define GDB_MIPS_LINUX_TDEP_H +#include "gdbsupport/tdesc.h" + /* Copied from . */ #define ELF_NGREG 45 #define ELF_NFPREG 33 @@ -108,9 +110,9 @@ enum { int mips_linux_restart_reg_p (struct gdbarch *gdbarch); /* Target descriptions. */ -extern const struct target_desc *tdesc_mips_linux; -extern const struct target_desc *tdesc_mips64_linux; -extern const struct target_desc *tdesc_mips_dsp_linux; -extern const struct target_desc *tdesc_mips64_dsp_linux; +extern const_target_desc_up tdesc_mips_linux; +extern const_target_desc_up tdesc_mips64_linux; +extern const_target_desc_up tdesc_mips_dsp_linux; +extern const_target_desc_up tdesc_mips64_dsp_linux; #endif /* GDB_MIPS_LINUX_TDEP_H */ diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c index f0a0b338931..80a2e1c706d 100644 --- a/gdb/nds32-tdep.c +++ b/gdb/nds32-tdep.c @@ -1974,7 +1974,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) return best_arch->gdbarch; if (!tdesc_has_registers (tdesc)) - tdesc = tdesc_nds32; + tdesc = tdesc_nds32.get (); tdesc_data = tdesc_data_alloc (); diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c index 442bdaf9fab..52222fef1dc 100644 --- a/gdb/or1k-tdep.c +++ b/gdb/or1k-tdep.c @@ -1234,7 +1234,7 @@ or1k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) if (!tdesc_has_registers (info.target_desc)) /* Pick a default target description. */ - tdesc = tdesc_or1k; + tdesc = tdesc_or1k.get (); /* Check any target description for validity. */ if (tdesc_has_registers (tdesc)) diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c index 27586d9a735..fd425654df7 100644 --- a/gdb/ppc-linux-nat.c +++ b/gdb/ppc-linux-nat.c @@ -1955,7 +1955,7 @@ ppc_linux_nat_target::read_description () struct gdb_evrregset_t evrregset; if (ptrace (PTRACE_GETEVRREGS, tid, 0, &evrregset) >= 0) - return tdesc_powerpc_e500l; + return tdesc_powerpc_e500l.get (); /* EIO means that the PTRACE_GETEVRREGS request isn't supported. Anything else needs to be reported. */ diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h index bf0e82a2820..f5d60b58ea0 100644 --- a/gdb/ppc-tdep.h +++ b/gdb/ppc-tdep.h @@ -21,6 +21,7 @@ #define GDB_PPC_TDEP_H #include "gdbarch.h" +#include "gdbsupport/tdesc.h" struct gdbarch; class frame_info_ptr; @@ -452,10 +453,10 @@ struct ppc_inferior_data extern ppc_inferior_data * get_ppc_per_inferior (inferior *inf); -extern const struct target_desc *tdesc_powerpc_vsx64l; -extern const struct target_desc *tdesc_powerpc_vsx64; -extern const struct target_desc *tdesc_powerpc_vsx32; -extern const struct target_desc *tdesc_powerpc_altivec64; -extern const struct target_desc *tdesc_powerpc_altivec32; +extern const_target_desc_up tdesc_powerpc_vsx64l; +extern const_target_desc_up tdesc_powerpc_vsx64; +extern const_target_desc_up tdesc_powerpc_vsx32; +extern const_target_desc_up tdesc_powerpc_altivec64; +extern const_target_desc_up tdesc_powerpc_altivec32; #endif /* GDB_PPC_TDEP_H */ diff --git a/gdb/rs6000-aix-nat.c b/gdb/rs6000-aix-nat.c index 2b0cf8577fa..29f4735ca93 100644 --- a/gdb/rs6000-aix-nat.c +++ b/gdb/rs6000-aix-nat.c @@ -689,16 +689,16 @@ rs6000_nat_target::read_description () if (ARCH64()) { if (__power_vsx ()) - return tdesc_powerpc_vsx64; + return tdesc_powerpc_vsx64.get (); else if (__power_vmx ()) - return tdesc_powerpc_altivec64; + return tdesc_powerpc_altivec64.get (); } else { if (__power_vsx ()) - return tdesc_powerpc_vsx32; + return tdesc_powerpc_vsx32.get (); else if (__power_vmx ()) - return tdesc_powerpc_altivec32; + return tdesc_powerpc_altivec32.get (); } return NULL; } diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c index ae1fb958628..366235f1919 100644 --- a/gdb/rs6000-aix-tdep.c +++ b/gdb/rs6000-aix-tdep.c @@ -470,13 +470,13 @@ ppc_aix_core_read_description (struct gdbarch *gdbarch, arch64 = 1; if (vsx && arch64) - return tdesc_powerpc_vsx64; + return tdesc_powerpc_vsx64.get (); else if (vsx && !arch64) - return tdesc_powerpc_vsx32; + return tdesc_powerpc_vsx32.get (); else if (altivec && arch64) - return tdesc_powerpc_altivec64; + return tdesc_powerpc_altivec64.get (); else if (altivec && !arch64) - return tdesc_powerpc_altivec32; + return tdesc_powerpc_altivec32.get (); return NULL; } diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index b73ab87b699..3184952b848 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -3525,7 +3525,7 @@ struct ppc_variant unsigned long mach; /* Target description for this variant. */ - const struct target_desc **tdesc; + const_target_desc_up *tdesc; }; static const ppc_variant variants[] = @@ -7676,7 +7676,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) if (!v) return NULL; - tdesc = *v->tdesc; + tdesc = v->tdesc->get (); } gdb_assert (tdesc_has_registers (tdesc)); diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c index c7b1dfa6ae7..0e073ad5504 100644 --- a/gdb/rx-tdep.c +++ b/gdb/rx-tdep.c @@ -975,7 +975,7 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) } if (tdesc == NULL) - tdesc = tdesc_rx; + tdesc = tdesc_rx.get (); /* Check any target description for validity. */ if (tdesc_has_registers (tdesc)) diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c index 5b723b10680..a4745e4fc4e 100644 --- a/gdb/s390-linux-nat.c +++ b/gdb/s390-linux-nat.c @@ -1029,7 +1029,7 @@ s390_linux_nat_target::read_description () have_regset_tdb ? tdesc_s390x_te_linux64 : have_regset_system_call ? tdesc_s390x_linux64v2 : have_regset_last_break ? tdesc_s390x_linux64v1 : - tdesc_s390x_linux64); + tdesc_s390x_linux64).get (); if (hwcap & HWCAP_S390_HIGH_GPRS) return (have_regset_gs ? tdesc_s390_gs_linux64 : @@ -1039,7 +1039,7 @@ s390_linux_nat_target::read_description () have_regset_tdb ? tdesc_s390_te_linux64 : have_regset_system_call ? tdesc_s390_linux64v2 : have_regset_last_break ? tdesc_s390_linux64v1 : - tdesc_s390_linux64); + tdesc_s390_linux64).get (); } #endif @@ -1048,7 +1048,7 @@ s390_linux_nat_target::read_description () mode, report s390 architecture with 32-bit GPRs. */ return (have_regset_system_call? tdesc_s390_linux32v2 : have_regset_last_break? tdesc_s390_linux32v1 : - tdesc_s390_linux32); + tdesc_s390_linux32).get (); } INIT_GDB_FILE (s390_nat) diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c index 593befb495a..23f13a650a5 100644 --- a/gdb/s390-linux-tdep.c +++ b/gdb/s390-linux-tdep.c @@ -358,10 +358,10 @@ s390_core_read_description (struct gdbarch *gdbarch, vx ? tdesc_s390_vx_linux64 : te ? tdesc_s390_te_linux64 : v2 ? tdesc_s390_linux64v2 : - v1 ? tdesc_s390_linux64v1 : tdesc_s390_linux64); + v1 ? tdesc_s390_linux64v1 : tdesc_s390_linux64).get (); else return (v2 ? tdesc_s390_linux32v2 : - v1 ? tdesc_s390_linux32v1 : tdesc_s390_linux32); + v1 ? tdesc_s390_linux32v1 : tdesc_s390_linux32).get (); case s390x_sizeof_gregset: return (gs ? tdesc_s390x_gs_linux64 : @@ -369,7 +369,7 @@ s390_core_read_description (struct gdbarch *gdbarch, vx ? tdesc_s390x_vx_linux64 : te ? tdesc_s390x_te_linux64 : v2 ? tdesc_s390x_linux64v2 : - v1 ? tdesc_s390x_linux64v1 : tdesc_s390x_linux64); + v1 ? tdesc_s390x_linux64v1 : tdesc_s390x_linux64).get (); default: return NULL; diff --git a/gdb/s390-linux-tdep.h b/gdb/s390-linux-tdep.h index 05ef893f64d..7044e0b2c97 100644 --- a/gdb/s390-linux-tdep.h +++ b/gdb/s390-linux-tdep.h @@ -20,6 +20,8 @@ #ifndef GDB_S390_LINUX_TDEP_H #define GDB_S390_LINUX_TDEP_H +#include "gdbsupport/tdesc.h" + #define S390_IS_GREGSET_REGNUM(i) \ (((i) >= S390_PSWM_REGNUM && (i) <= S390_A15_REGNUM) \ || ((i) >= S390_R0_UPPER_REGNUM && (i) <= S390_R15_UPPER_REGNUM) \ @@ -48,20 +50,20 @@ extern const struct regset s390_gs_regset; extern const struct regset s390_gsbc_regset; /* GNU/Linux target descriptions. */ -extern const struct target_desc *tdesc_s390_linux32v1; -extern const struct target_desc *tdesc_s390_linux32v2; -extern const struct target_desc *tdesc_s390_linux64; -extern const struct target_desc *tdesc_s390_linux64v1; -extern const struct target_desc *tdesc_s390_linux64v2; -extern const struct target_desc *tdesc_s390_te_linux64; -extern const struct target_desc *tdesc_s390_vx_linux64; -extern const struct target_desc *tdesc_s390_tevx_linux64; -extern const struct target_desc *tdesc_s390_gs_linux64; -extern const struct target_desc *tdesc_s390x_linux64v1; -extern const struct target_desc *tdesc_s390x_linux64v2; -extern const struct target_desc *tdesc_s390x_te_linux64; -extern const struct target_desc *tdesc_s390x_vx_linux64; -extern const struct target_desc *tdesc_s390x_tevx_linux64; -extern const struct target_desc *tdesc_s390x_gs_linux64; +extern const_target_desc_up tdesc_s390_linux32v1; +extern const_target_desc_up tdesc_s390_linux32v2; +extern const_target_desc_up tdesc_s390_linux64; +extern const_target_desc_up tdesc_s390_linux64v1; +extern const_target_desc_up tdesc_s390_linux64v2; +extern const_target_desc_up tdesc_s390_te_linux64; +extern const_target_desc_up tdesc_s390_vx_linux64; +extern const_target_desc_up tdesc_s390_tevx_linux64; +extern const_target_desc_up tdesc_s390_gs_linux64; +extern const_target_desc_up tdesc_s390x_linux64v1; +extern const_target_desc_up tdesc_s390x_linux64v2; +extern const_target_desc_up tdesc_s390x_te_linux64; +extern const_target_desc_up tdesc_s390x_vx_linux64; +extern const_target_desc_up tdesc_s390x_tevx_linux64; +extern const_target_desc_up tdesc_s390x_gs_linux64; #endif /* GDB_S390_LINUX_TDEP_H */ diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index ccffafcecab..e47832e474c 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -7392,9 +7392,9 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) if (!tdesc_has_registers (tdesc)) { if (info.bfd_arch_info->mach == bfd_mach_s390_31) - tdesc = tdesc_s390_linux32; + tdesc = tdesc_s390_linux32.get (); else - tdesc = tdesc_s390x_linux64; + tdesc = tdesc_s390x_linux64.get (); } tdep->tdesc = tdesc; diff --git a/gdb/s390-tdep.h b/gdb/s390-tdep.h index 80ca3b4b56c..cd720793d43 100644 --- a/gdb/s390-tdep.h +++ b/gdb/s390-tdep.h @@ -20,6 +20,7 @@ #ifndef GDB_S390_TDEP_H #define GDB_S390_TDEP_H +#include "gdbsupport/tdesc.h" #include "prologue-value.h" #include "gdbarch.h" @@ -320,7 +321,7 @@ extern struct value *s390_trad_frame_prev_register (const frame_info_ptr &this_frame, struct trad_frame_saved_reg saved_regs[], int regnum); -extern const struct target_desc *tdesc_s390_linux32; -extern const struct target_desc *tdesc_s390x_linux64; +extern const_target_desc_up tdesc_s390_linux32; +extern const_target_desc_up tdesc_s390x_linux64; #endif /* GDB_S390_TDEP_H */ diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c index 858a019e615..46e2219c971 100644 --- a/gdb/target-descriptions.c +++ b/gdb/target-descriptions.c @@ -1134,7 +1134,7 @@ allocate_target_description (void) /* See gdbsupport/tdesc.h. */ void -target_desc_deleter::operator() (struct target_desc *target_desc) const +target_desc_deleter::operator() (const target_desc *target_desc) const { delete target_desc; } @@ -1292,7 +1292,7 @@ public: gdb_printf ("#include \"target-descriptions.h\"\n"); gdb_printf ("\n"); - gdb_printf ("const struct target_desc *tdesc_%s;\n", m_function); + gdb_printf ("const_target_desc_up tdesc_%s;\n", m_function); gdb_printf ("static void\n"); gdb_printf ("initialize_tdesc_%s (void)\n", m_function); gdb_printf ("{\n"); @@ -1340,7 +1340,7 @@ public: void visit_post (const target_desc *e) override { - gdb_printf ("\n tdesc_%s = result.release ();\n", m_function); + gdb_printf ("\n tdesc_%s = std::move (result);\n", m_function); gdb_printf ("}\n"); } diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c index 6a099cd6e74..b07d6b15385 100644 --- a/gdb/z80-tdep.c +++ b/gdb/z80-tdep.c @@ -1085,8 +1085,10 @@ z80_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) const struct target_desc *tdesc = info.target_desc; if (!tdesc_has_registers (tdesc)) - /* Pick a default target description. */ - tdesc = tdesc_z80; + { + /* Pick a default target description. */ + tdesc = tdesc_z80.get (); + } /* Check any target description for validity. */ if (tdesc_has_registers (tdesc)) diff --git a/gdbserver/linux-aarch32-tdesc.cc b/gdbserver/linux-aarch32-tdesc.cc index 675eb58e2c4..c97d52ef859 100644 --- a/gdbserver/linux-aarch32-tdesc.cc +++ b/gdbserver/linux-aarch32-tdesc.cc @@ -22,7 +22,7 @@ #include "arch/aarch32.h" #include -static struct target_desc *tdesc_aarch32; +static const_target_desc_up tdesc_aarch32; /* See linux-aarch32-tdesc.h. */ @@ -31,12 +31,13 @@ aarch32_linux_read_description () { if (tdesc_aarch32 == nullptr) { - tdesc_aarch32 = aarch32_create_target_description (false); + target_desc_up new_tdesc = aarch32_create_target_description (false); static const char *expedite_regs[] = { "r11", "sp", "pc", 0 }; - init_target_desc (tdesc_aarch32, expedite_regs, GDB_OSABI_LINUX); + init_target_desc (new_tdesc.get (), expedite_regs, GDB_OSABI_LINUX); + tdesc_aarch32 = std::move (new_tdesc); } - return tdesc_aarch32; + return tdesc_aarch32.get (); } /* See linux-aarch32-tdesc.h. */ @@ -45,5 +46,5 @@ bool is_aarch32_linux_description (const target_desc *tdesc) { gdb_assert (tdesc != nullptr); - return tdesc == tdesc_aarch32; + return tdesc == tdesc_aarch32.get (); } diff --git a/gdbserver/linux-aarch64-tdesc.cc b/gdbserver/linux-aarch64-tdesc.cc index cbd049dbd24..eef43754afd 100644 --- a/gdbserver/linux-aarch64-tdesc.cc +++ b/gdbserver/linux-aarch64-tdesc.cc @@ -35,7 +35,8 @@ aarch64_linux_read_description (const aarch64_features &features) this function as the in-process-agent calls this function from a constructor function, when globals might not yet have been initialised. */ - static gdb::unordered_map tdesc_aarch64_map; + static gdb::unordered_map + tdesc_aarch64_map; if (features.vq > AARCH64_MAX_SVE_VQ) error (_("VQ is %" PRIu64 ", maximum supported value is %d"), features.vq, @@ -46,11 +47,11 @@ aarch64_linux_read_description (const aarch64_features &features) features.svq, AARCH64_MAX_SVE_VQ); - struct target_desc *tdesc = tdesc_aarch64_map[features]; + const_target_desc_up &tdesc = tdesc_aarch64_map[features]; - if (tdesc == NULL) + if (tdesc == nullptr) { - tdesc = aarch64_create_target_description (features); + target_desc_up new_tdesc = aarch64_create_target_description (features); /* Configure the expedited registers. Calling init_target_desc takes a copy of all the strings pointed to by expedited_registers so this @@ -67,11 +68,11 @@ aarch64_linux_read_description (const aarch64_features &features) expedited_registers.push_back (nullptr); - init_target_desc (tdesc, (const char **) expedited_registers.data (), + init_target_desc (new_tdesc.get (), (const char **) expedited_registers.data (), GDB_OSABI_LINUX); - tdesc_aarch64_map[features] = tdesc; + tdesc = std::move (new_tdesc); } - return tdesc; + return tdesc.get (); } diff --git a/gdbserver/linux-arc-low.cc b/gdbserver/linux-arc-low.cc index 7d27a5b7b25..0805862ee7f 100644 --- a/gdbserver/linux-arc-low.cc +++ b/gdbserver/linux-arc-low.cc @@ -103,7 +103,7 @@ arc_target::low_set_pc (regcache *regcache, CORE_ADDR pc) linux_set_pc_32bit (regcache, pc); } -static const struct target_desc * +static const_target_desc_up arc_linux_read_description (void) { #ifdef __ARC700__ @@ -116,13 +116,13 @@ arc_linux_read_description (void) static const char *expedite_regs[] = { "sp", "status32", nullptr }; init_target_desc (tdesc.get (), expedite_regs, GDB_OSABI_LINUX); - return tdesc.release (); + return tdesc; } void arc_target::low_arch_setup () { - current_process ()->tdesc = arc_linux_read_description (); + current_process ()->tdesc = arc_linux_read_description ().release (); } bool diff --git a/gdbserver/linux-arm-tdesc.cc b/gdbserver/linux-arm-tdesc.cc index 2671f1206f0..17ce57636f1 100644 --- a/gdbserver/linux-arm-tdesc.cc +++ b/gdbserver/linux-arm-tdesc.cc @@ -23,26 +23,26 @@ #include /* All possible Arm target descriptors. */ -static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID]; +static const_target_desc_up tdesc_arm_list[ARM_FP_TYPE_INVALID]; /* See linux-arm-tdesc.h. */ const target_desc * arm_linux_read_description (arm_fp_type fp_type) { - struct target_desc *tdesc = tdesc_arm_list[fp_type]; + const_target_desc_up &tdesc = tdesc_arm_list[fp_type]; if (tdesc == nullptr) { - tdesc = arm_create_target_description (fp_type, false); + target_desc_up new_tdesc = arm_create_target_description (fp_type, false); static const char *expedite_regs[] = { "r11", "sp", "pc", 0 }; - init_target_desc (tdesc, expedite_regs, GDB_OSABI_LINUX); + init_target_desc (new_tdesc.get (), expedite_regs, GDB_OSABI_LINUX); - tdesc_arm_list[fp_type] = tdesc; + tdesc = std::move (new_tdesc); } - return tdesc; + return tdesc.get (); } /* See linux-arm-tdesc.h. */ @@ -56,7 +56,7 @@ arm_linux_get_tdesc_fp_type (const target_desc *tdesc) is ok, because tdesc must be one of the initialised ones. */ for (int i = ARM_FP_TYPE_NONE; i < ARM_FP_TYPE_INVALID; i++) { - if (tdesc == tdesc_arm_list[i]) + if (tdesc == tdesc_arm_list[i].get ()) return (arm_fp_type) i; } diff --git a/gdbserver/linux-ppc-ipa.cc b/gdbserver/linux-ppc-ipa.cc index 66e394018ce..b97db9c8587 100644 --- a/gdbserver/linux-ppc-ipa.cc +++ b/gdbserver/linux-ppc-ipa.cc @@ -177,51 +177,51 @@ get_ipa_tdesc (int idx) { #ifdef __powerpc64__ case PPC_TDESC_BASE: - return tdesc_powerpc_64l; + return tdesc_powerpc_64l.get (); case PPC_TDESC_ALTIVEC: - return tdesc_powerpc_altivec64l; + return tdesc_powerpc_altivec64l.get (); case PPC_TDESC_VSX: - return tdesc_powerpc_vsx64l; + return tdesc_powerpc_vsx64l.get (); case PPC_TDESC_ISA205: - return tdesc_powerpc_isa205_64l; + return tdesc_powerpc_isa205_64l.get (); case PPC_TDESC_ISA205_ALTIVEC: - return tdesc_powerpc_isa205_altivec64l; + return tdesc_powerpc_isa205_altivec64l.get (); case PPC_TDESC_ISA205_VSX: - return tdesc_powerpc_isa205_vsx64l; + return tdesc_powerpc_isa205_vsx64l.get (); case PPC_TDESC_ISA205_PPR_DSCR_VSX: - return tdesc_powerpc_isa205_ppr_dscr_vsx64l; + return tdesc_powerpc_isa205_ppr_dscr_vsx64l.get (); case PPC_TDESC_ISA207_VSX: - return tdesc_powerpc_isa207_vsx64l; + return tdesc_powerpc_isa207_vsx64l.get (); case PPC_TDESC_ISA207_HTM_VSX: - return tdesc_powerpc_isa207_htm_vsx64l; + return tdesc_powerpc_isa207_htm_vsx64l.get (); #else case PPC_TDESC_BASE: - return tdesc_powerpc_32l; + return tdesc_powerpc_32l.get (); case PPC_TDESC_ALTIVEC: - return tdesc_powerpc_altivec32l; + return tdesc_powerpc_altivec32l.get (); case PPC_TDESC_VSX: - return tdesc_powerpc_vsx32l; + return tdesc_powerpc_vsx32l.get (); case PPC_TDESC_ISA205: - return tdesc_powerpc_isa205_32l; + return tdesc_powerpc_isa205_32l.get (); case PPC_TDESC_ISA205_ALTIVEC: - return tdesc_powerpc_isa205_altivec32l; + return tdesc_powerpc_isa205_altivec32l.get (); case PPC_TDESC_ISA205_VSX: - return tdesc_powerpc_isa205_vsx32l; + return tdesc_powerpc_isa205_vsx32l.get (); case PPC_TDESC_ISA205_PPR_DSCR_VSX: - return tdesc_powerpc_isa205_ppr_dscr_vsx32l; + return tdesc_powerpc_isa205_ppr_dscr_vsx32l.get (); case PPC_TDESC_ISA207_VSX: - return tdesc_powerpc_isa207_vsx32l; + return tdesc_powerpc_isa207_vsx32l.get (); case PPC_TDESC_ISA207_HTM_VSX: - return tdesc_powerpc_isa207_htm_vsx32l; + return tdesc_powerpc_isa207_htm_vsx32l.get (); case PPC_TDESC_E500: - return tdesc_powerpc_e500l; + return tdesc_powerpc_e500l.get (); #endif default: internal_error ("unknown ipa tdesc index: %d", idx); #ifdef __powerpc64__ - return tdesc_powerpc_64l; + return tdesc_powerpc_64l.get (); #else - return tdesc_powerpc_32l; + return tdesc_powerpc_32l.get (); #endif } } diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc index dc8a48b763a..0590f57b24a 100644 --- a/gdbserver/linux-ppc-low.cc +++ b/gdbserver/linux-ppc-low.cc @@ -884,9 +884,9 @@ ppc_target::low_arch_setup () features.wordsize = ppc_linux_target_wordsize (tid); if (features.wordsize == 4) - tdesc = tdesc_powerpc_32l; + tdesc = tdesc_powerpc_32l.get (); else - tdesc = tdesc_powerpc_64l; + tdesc = tdesc_powerpc_64l.get (); current_process ()->tdesc = tdesc; @@ -932,7 +932,7 @@ ppc_target::low_arch_setup () Set the low target's regmap field as appropriately. */ #ifndef __powerpc64__ if (ppc_hwcap & PPC_FEATURE_HAS_SPE) - tdesc = tdesc_powerpc_e500l; + tdesc = tdesc_powerpc_e500l.get (); if (!ppc_regmap_adjusted) { @@ -3397,45 +3397,45 @@ ppc_target::get_ipa_tdesc_idx () const target_desc *tdesc = current_process ()->tdesc; #ifdef __powerpc64__ - if (tdesc == tdesc_powerpc_64l) + if (tdesc == tdesc_powerpc_64l.get ()) return PPC_TDESC_BASE; - if (tdesc == tdesc_powerpc_altivec64l) + if (tdesc == tdesc_powerpc_altivec64l.get ()) return PPC_TDESC_ALTIVEC; - if (tdesc == tdesc_powerpc_vsx64l) + if (tdesc == tdesc_powerpc_vsx64l.get ()) return PPC_TDESC_VSX; - if (tdesc == tdesc_powerpc_isa205_64l) + if (tdesc == tdesc_powerpc_isa205_64l.get ()) return PPC_TDESC_ISA205; - if (tdesc == tdesc_powerpc_isa205_altivec64l) + if (tdesc == tdesc_powerpc_isa205_altivec64l.get ()) return PPC_TDESC_ISA205_ALTIVEC; - if (tdesc == tdesc_powerpc_isa205_vsx64l) + if (tdesc == tdesc_powerpc_isa205_vsx64l.get ()) return PPC_TDESC_ISA205_VSX; - if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx64l) + if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx64l.get ()) return PPC_TDESC_ISA205_PPR_DSCR_VSX; - if (tdesc == tdesc_powerpc_isa207_vsx64l) + if (tdesc == tdesc_powerpc_isa207_vsx64l.get ()) return PPC_TDESC_ISA207_VSX; - if (tdesc == tdesc_powerpc_isa207_htm_vsx64l) + if (tdesc == tdesc_powerpc_isa207_htm_vsx64l.get ()) return PPC_TDESC_ISA207_HTM_VSX; #endif - if (tdesc == tdesc_powerpc_32l) + if (tdesc == tdesc_powerpc_32l.get ()) return PPC_TDESC_BASE; - if (tdesc == tdesc_powerpc_altivec32l) + if (tdesc == tdesc_powerpc_altivec32l.get ()) return PPC_TDESC_ALTIVEC; - if (tdesc == tdesc_powerpc_vsx32l) + if (tdesc == tdesc_powerpc_vsx32l.get ()) return PPC_TDESC_VSX; - if (tdesc == tdesc_powerpc_isa205_32l) + if (tdesc == tdesc_powerpc_isa205_32l.get ()) return PPC_TDESC_ISA205; - if (tdesc == tdesc_powerpc_isa205_altivec32l) + if (tdesc == tdesc_powerpc_isa205_altivec32l.get ()) return PPC_TDESC_ISA205_ALTIVEC; - if (tdesc == tdesc_powerpc_isa205_vsx32l) + if (tdesc == tdesc_powerpc_isa205_vsx32l.get ()) return PPC_TDESC_ISA205_VSX; - if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx32l) + if (tdesc == tdesc_powerpc_isa205_ppr_dscr_vsx32l.get ()) return PPC_TDESC_ISA205_PPR_DSCR_VSX; - if (tdesc == tdesc_powerpc_isa207_vsx32l) + if (tdesc == tdesc_powerpc_isa207_vsx32l.get ()) return PPC_TDESC_ISA207_VSX; - if (tdesc == tdesc_powerpc_isa207_htm_vsx32l) + if (tdesc == tdesc_powerpc_isa207_htm_vsx32l.get ()) return PPC_TDESC_ISA207_HTM_VSX; - if (tdesc == tdesc_powerpc_e500l) + if (tdesc == tdesc_powerpc_e500l.get ()) return PPC_TDESC_E500; return 0; diff --git a/gdbserver/linux-tic6x-low.cc b/gdbserver/linux-tic6x-low.cc index 810a8148bd4..9281b78f127 100644 --- a/gdbserver/linux-tic6x-low.cc +++ b/gdbserver/linux-tic6x-low.cc @@ -209,17 +209,18 @@ static struct usrregs_info tic6x_usrregs_info = static const struct target_desc * tic6x_read_description (enum c6x_feature feature) { - static target_desc *tdescs[C6X_LAST] = { }; - struct target_desc **tdesc = &tdescs[feature]; + static const_target_desc_up tdescs[C6X_LAST]; + const_target_desc_up &tdesc = &tdescs[feature]; - if (*tdesc == NULL) + if (tdesc == nullptr) { - *tdesc = tic6x_create_target_description (feature); + target_desc_up new_tdesc = tic6x_create_target_description (feature); static const char *expedite_regs[] = { "A15", "PC", NULL }; - init_target_desc (*tdesc, expedite_regs, GDB_OSABI_LINUX); + init_target_desc (new_tdesc.get (), expedite_regs, GDB_OSABI_LINUX); + tdesc = std::move (new_tdesc); } - return *tdesc; + return tdesc->get (); } bool diff --git a/gdbserver/netbsd-aarch64-low.cc b/gdbserver/netbsd-aarch64-low.cc index 90f136dc7df..172af5be212 100644 --- a/gdbserver/netbsd-aarch64-low.cc +++ b/gdbserver/netbsd-aarch64-low.cc @@ -94,13 +94,12 @@ netbsd_aarch64_target::get_regs_info () void netbsd_aarch64_target::low_arch_setup () { - target_desc *tdesc - = aarch64_create_target_description ({}); + target_desc_up tdesc = aarch64_create_target_description ({}); static const char *expedite_regs_aarch64[] = { "x29", "sp", "pc", NULL }; - init_target_desc (tdesc, expedite_regs_aarch64, GDB_OSABI_NETBSD); + init_target_desc (tdesc.get (), expedite_regs_aarch64, GDB_OSABI_NETBSD); - current_process ()->tdesc = tdesc; + current_process ()->tdesc = tdesc.release (); } /* The singleton target ops object. */ diff --git a/gdbserver/netbsd-amd64-low.cc b/gdbserver/netbsd-amd64-low.cc index c99393aae4b..8e19c59715b 100644 --- a/gdbserver/netbsd-amd64-low.cc +++ b/gdbserver/netbsd-amd64-low.cc @@ -190,12 +190,12 @@ netbsd_amd64_target::get_regs_info () void netbsd_amd64_target::low_arch_setup () { - target_desc *tdesc + target_desc_up tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false, false, false); - init_target_desc (tdesc, amd64_expedite_regs, GDB_OSABI_NETBSD); + init_target_desc (tdesc.get (), amd64_expedite_regs, GDB_OSABI_NETBSD); - current_process ()->tdesc = tdesc; + current_process ()->tdesc = tdesc.release (); } /* The singleton target ops object. */ diff --git a/gdbserver/netbsd-i386-low.cc b/gdbserver/netbsd-i386-low.cc index d9e2ef78622..92586962134 100644 --- a/gdbserver/netbsd-i386-low.cc +++ b/gdbserver/netbsd-i386-low.cc @@ -139,12 +139,12 @@ netbsd_i386_target::get_regs_info () void netbsd_i386_target::low_arch_setup () { - target_desc *tdesc + target_desc_up tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false); - init_target_desc (tdesc, i386_expedite_regs, GDB_OSABI_NETBSD); + init_target_desc (tdesc.get (), i386_expedite_regs, GDB_OSABI_NETBSD); - current_process ()->tdesc = tdesc; + current_process ()->tdesc = tdesc.release (); } /* The singleton target ops object. */ diff --git a/gdbserver/tdesc.cc b/gdbserver/tdesc.cc index 54c105c54ec..59698159f65 100644 --- a/gdbserver/tdesc.cc +++ b/gdbserver/tdesc.cc @@ -105,7 +105,7 @@ allocate_target_description (void) /* See gdbsupport/tdesc.h. */ void -target_desc_deleter::operator() (struct target_desc *target_desc) const +target_desc_deleter::operator() (const target_desc *target_desc) const { delete target_desc; } diff --git a/gdbserver/win32-i386-low.cc b/gdbserver/win32-i386-low.cc index 26de2ecc42f..565b42377a4 100644 --- a/gdbserver/win32-i386-low.cc +++ b/gdbserver/win32-i386-low.cc @@ -541,21 +541,21 @@ static const unsigned char i386_win32_breakpoint = 0xcc; static void i386_arch_setup (void) { - struct target_desc *tdesc; + target_desc_up tdesc; #ifdef __x86_64__ tdesc = amd64_create_target_description (X86_XSTATE_SSE_MASK, false, false, false); - init_target_desc (tdesc, amd64_expedite_regs, WINDOWS_OSABI); - win32_tdesc = tdesc; + init_target_desc (tdesc.get (), amd64_expedite_regs, WINDOWS_OSABI); + win32_tdesc = std::move (tdesc); #endif tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false); - init_target_desc (tdesc, i386_expedite_regs, WINDOWS_OSABI); + init_target_desc (tdesc.get (), i386_expedite_regs, WINDOWS_OSABI); #ifdef __x86_64__ - wow64_win32_tdesc = tdesc; + wow64_win32_tdesc = std::move (tdesc); #else - win32_tdesc = tdesc; + win32_tdesc = std::move (tdesc); #endif } diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc index 635479b638c..770c9a37357 100644 --- a/gdbserver/win32-low.cc +++ b/gdbserver/win32-low.cc @@ -62,9 +62,9 @@ gdbserver_windows_process windows_process; int using_threads = 1; -const struct target_desc *win32_tdesc; +const_target_desc_up win32_tdesc; #ifdef __x86_64__ -const struct target_desc *wow64_win32_tdesc; +const_target_desc_up wow64_win32_tdesc; #endif #define NUM_REGS (the_low_target.num_regs ()) @@ -326,10 +326,10 @@ do_initial_child_stuff (HANDLE proch, DWORD pid, int attached) proc = add_process (pid, attached); #ifdef __x86_64__ if (windows_process.wow64_process) - proc->tdesc = wow64_win32_tdesc; + proc->tdesc = wow64_win32_tdesc.get (); else #endif - proc->tdesc = win32_tdesc; + proc->tdesc = win32_tdesc.get (); child_init_thread_list (); windows_process.child_initialization_done = 0; diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h index 680ae2bb344..a96875e7098 100644 --- a/gdbserver/win32-low.h +++ b/gdbserver/win32-low.h @@ -20,6 +20,7 @@ #define GDBSERVER_WIN32_LOW_H #include +#include "gdbsupport/tdesc.h" #include "nat/windows-nat.h" #include "gdbsupport/osabi.h" @@ -27,9 +28,9 @@ struct target_desc; /* The inferior's target description. This is a global because the Windows ports support neither bi-arch nor multi-process. */ -extern const struct target_desc *win32_tdesc; +extern const_target_desc_up win32_tdesc; #ifdef __x86_64__ -extern const struct target_desc *wow64_win32_tdesc; +extern const_target_desc_up wow64_win32_tdesc; #endif #ifdef __CYGWIN__ diff --git a/gdbsupport/tdesc.h b/gdbsupport/tdesc.h index 6bf66ad3dcd..a54cc395196 100644 --- a/gdbsupport/tdesc.h +++ b/gdbsupport/tdesc.h @@ -322,12 +322,14 @@ typedef std::unique_ptr tdesc_feature_up; struct target_desc_deleter { - void operator() (struct target_desc *desc) const; + void operator() (const target_desc *desc) const; }; /* A unique pointer specialization that holds a target_desc. */ -typedef std::unique_ptr target_desc_up; +using target_desc_up = std::unique_ptr; +using const_target_desc_up + = std::unique_ptr; /* Allocate a new target_desc. */ target_desc_up allocate_target_description (void);