#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 ();
}
#include "opcode/aarch64.h"
#include <algorithm>
-#include <unordered_map>
/* For inferior_ptid and current_inferior (). */
#include "inferior.h"
#define HA_MAX_NUM_FLDS 4
/* All possible aarch64 target descriptors. */
-static gdb::unordered_map <aarch64_features, target_desc *> tdesc_aarch64_map;
+static gdb::unordered_map <aarch64_features, const_target_desc_up>
+ 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
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. */
return arches->gdbarch;
if (tdesc == nullptr)
- tdesc = tdesc_alpha;
+ tdesc = tdesc_alpha.get ();
/* Validate target description. */
if (tdesc_has_registers (tdesc))
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
/* See aarch32.h. */
-target_desc *
+target_desc_up
aarch32_create_target_description (bool tls)
{
target_desc_up tdesc = allocate_target_description ();
if (tls)
regnum = create_feature_arm_arm_tls (tdesc.get (), regnum);
- return tdesc.release ();
+ return tdesc;
}
/* 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 */
/* See arch/aarch64.h. */
-target_desc *
+target_desc_up
aarch64_create_target_description (const aarch64_features &features)
{
target_desc_up tdesc = allocate_target_description ();
if (features.fpmr)
regnum = create_feature_aarch64_fpmr (tdesc.get (), regnum);
- return tdesc.release ();
+ return tdesc;
}
/* See arch/aarch64.h. */
/* 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
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<uint64_t, target_desc_up>;
+ using tdesc_cache_type = gdb::unordered_map<uint64_t, const_target_desc_up>;
/* Caches for the previously seen amd64 and x32 target descriptions,
indexed by the xstate_bv value that created the target
? 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 ();
}
/* 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)
{
regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum);
}
- return tdesc.release ();
+ return tdesc;
}
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 */
/* 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 ();
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;
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:
/* 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 */
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<uint64_t, target_desc_up> i386_tdesc_cache;
+ static gdb::unordered_map<uint64_t, const_target_desc_up> 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
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 ();
}
/* See arch/i386.h. */
-target_desc *
+target_desc_up
i386_create_target_description (uint64_t xstate_bv, bool is_linux,
bool segments)
{
if (xstate_bv & X86_XSTATE_CET_U)
regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum);
- return tdesc.release ();
+ return tdesc;
}
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 */
/* Cache of previously seen target descriptions, indexed by the feature set
that created them. */
static std::unordered_map<loongarch_gdbarch_features,
- const target_desc_up,
+ const_target_desc_up,
loongarch_gdbarch_features_hasher> loongarch_tdesc_cache;
const target_desc *
/* 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 */
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);
#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 */
/* 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 ();
if (feature == C6X_C6XP)
regnum = create_feature_tic6x_c6xp (tdesc.get (), regnum);
- return tdesc.release ();
+ return tdesc;
}
#ifndef GDB_ARCH_TIC6X_H
#define GDB_ARCH_TIC6X_H
+#include "gdbsupport/tdesc.h"
+
enum c6x_feature
{
C6X_CORE,
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 */
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. */
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. */
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 ();
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
#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)
{
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);
}
/* 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)
{
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 *
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))
{
/* 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);
/* 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.
#ifndef GDB_MIPS_LINUX_TDEP_H
#define GDB_MIPS_LINUX_TDEP_H
+#include "gdbsupport/tdesc.h"
+
/* Copied from <asm/elf.h>. */
#define ELF_NGREG 45
#define ELF_NFPREG 33
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 */
return best_arch->gdbarch;
if (!tdesc_has_registers (tdesc))
- tdesc = tdesc_nds32;
+ tdesc = tdesc_nds32.get ();
tdesc_data = tdesc_data_alloc ();
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))
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. */
#define GDB_PPC_TDEP_H
#include "gdbarch.h"
+#include "gdbsupport/tdesc.h"
struct gdbarch;
class frame_info_ptr;
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 */
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;
}
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;
}
unsigned long mach;
/* Target description for this variant. */
- const struct target_desc **tdesc;
+ const_target_desc_up *tdesc;
};
static const ppc_variant variants[] =
if (!v)
return NULL;
- tdesc = *v->tdesc;
+ tdesc = v->tdesc->get ();
}
gdb_assert (tdesc_has_registers (tdesc));
}
if (tdesc == NULL)
- tdesc = tdesc_rx;
+ tdesc = tdesc_rx.get ();
/* Check any target description for validity. */
if (tdesc_has_registers (tdesc))
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 :
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
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)
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 :
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;
#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) \
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 */
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;
#ifndef GDB_S390_TDEP_H
#define GDB_S390_TDEP_H
+#include "gdbsupport/tdesc.h"
#include "prologue-value.h"
#include "gdbarch.h"
(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 */
/* 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;
}
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");
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");
}
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))
#include "arch/aarch32.h"
#include <inttypes.h>
-static struct target_desc *tdesc_aarch32;
+static const_target_desc_up tdesc_aarch32;
/* See linux-aarch32-tdesc.h. */
{
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. */
is_aarch32_linux_description (const target_desc *tdesc)
{
gdb_assert (tdesc != nullptr);
- return tdesc == tdesc_aarch32;
+ return tdesc == tdesc_aarch32.get ();
}
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<aarch64_features, target_desc *> tdesc_aarch64_map;
+ static gdb::unordered_map<aarch64_features, const_target_desc_up>
+ tdesc_aarch64_map;
if (features.vq > AARCH64_MAX_SVE_VQ)
error (_("VQ is %" PRIu64 ", maximum supported value is %d"), features.vq,
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
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 ();
}
linux_set_pc_32bit (regcache, pc);
}
-static const struct target_desc *
+static const_target_desc_up
arc_linux_read_description (void)
{
#ifdef __ARC700__
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
#include <inttypes.h>
/* 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. */
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;
}
{
#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
}
}
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;
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)
{
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;
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
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. */
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. */
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. */
/* 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;
}
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
}
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 ())
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;
#define GDBSERVER_WIN32_LOW_H
#include <windows.h>
+#include "gdbsupport/tdesc.h"
#include "nat/windows-nat.h"
#include "gdbsupport/osabi.h"
/* 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__
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, target_desc_deleter> target_desc_up;
+using target_desc_up = std::unique_ptr<target_desc, target_desc_deleter>;
+using const_target_desc_up
+ = std::unique_ptr<const target_desc, target_desc_deleter>;
/* Allocate a new target_desc. */
target_desc_up allocate_target_description (void);