mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
gdbserver: make arch and osabi names gdb::unique_xmalloc_ptr<char>
Convert target_desc::arch and target_desc::osabi from 'const char*' to gdb::unique_xmalloc_ptr<char>. This also allows us to remove the user defined ~target_desc destructor. I doubt it ever actually occurred, but in theory at least, there was a memory leak in set_tdesc_architecture and set_tdesc_osabi where the member variables were assigned without freeing any previous value... but I suspect that usually these fields are only set once. There should be no user visible changes after this commit. Approved-By: Tom Tromey <tom@tromey.com> Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -20,12 +20,6 @@
|
|||||||
|
|
||||||
#ifndef IN_PROCESS_AGENT
|
#ifndef IN_PROCESS_AGENT
|
||||||
|
|
||||||
target_desc::~target_desc ()
|
|
||||||
{
|
|
||||||
xfree ((char *) arch);
|
|
||||||
xfree ((char *) osabi);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool target_desc::operator== (const target_desc &other) const
|
bool target_desc::operator== (const target_desc &other) const
|
||||||
{
|
{
|
||||||
if (reg_defs != other.reg_defs)
|
if (reg_defs != other.reg_defs)
|
||||||
@@ -162,7 +156,7 @@ tdesc_compatible_info_arch_name (const tdesc_compatible_info_up &c_info)
|
|||||||
const char *
|
const char *
|
||||||
tdesc_architecture_name (const struct target_desc *target_desc)
|
tdesc_architecture_name (const struct target_desc *target_desc)
|
||||||
{
|
{
|
||||||
return target_desc->arch;
|
return target_desc->arch.get ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbsupport/tdesc.h. */
|
/* See gdbsupport/tdesc.h. */
|
||||||
@@ -171,7 +165,7 @@ void
|
|||||||
set_tdesc_architecture (struct target_desc *target_desc,
|
set_tdesc_architecture (struct target_desc *target_desc,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
target_desc->arch = xstrdup (name);
|
target_desc->arch = make_unique_xstrdup (name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbsupport/tdesc.h. */
|
/* See gdbsupport/tdesc.h. */
|
||||||
@@ -179,7 +173,7 @@ set_tdesc_architecture (struct target_desc *target_desc,
|
|||||||
const char *
|
const char *
|
||||||
tdesc_osabi_name (const struct target_desc *target_desc)
|
tdesc_osabi_name (const struct target_desc *target_desc)
|
||||||
{
|
{
|
||||||
return target_desc->osabi;
|
return target_desc->osabi.get ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbsupport/tdesc.h. */
|
/* See gdbsupport/tdesc.h. */
|
||||||
@@ -187,7 +181,7 @@ tdesc_osabi_name (const struct target_desc *target_desc)
|
|||||||
void
|
void
|
||||||
set_tdesc_osabi (struct target_desc *target_desc, const char *name)
|
set_tdesc_osabi (struct target_desc *target_desc, const char *name)
|
||||||
{
|
{
|
||||||
target_desc->osabi = xstrdup (name);
|
target_desc->osabi = make_unique_xstrdup (name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbsupport/tdesc.h. */
|
/* See gdbsupport/tdesc.h. */
|
||||||
@@ -198,7 +192,7 @@ tdesc_get_features_xml (const target_desc *tdesc)
|
|||||||
/* Either .xmltarget or .features is not NULL. */
|
/* Either .xmltarget or .features is not NULL. */
|
||||||
gdb_assert (tdesc->xmltarget != NULL
|
gdb_assert (tdesc->xmltarget != NULL
|
||||||
|| (!tdesc->features.empty ()
|
|| (!tdesc->features.empty ()
|
||||||
&& tdesc->arch != NULL));
|
&& tdesc_architecture_name (tdesc) != nullptr));
|
||||||
|
|
||||||
if (tdesc->xmltarget == NULL)
|
if (tdesc->xmltarget == NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -54,18 +54,16 @@ struct target_desc final : tdesc_element
|
|||||||
mutable const char *xmltarget = NULL;
|
mutable const char *xmltarget = NULL;
|
||||||
|
|
||||||
/* The value of <architecture> element in the XML, replying GDB. */
|
/* The value of <architecture> element in the XML, replying GDB. */
|
||||||
const char *arch = NULL;
|
gdb::unique_xmalloc_ptr<char> arch;
|
||||||
|
|
||||||
/* The value of <osabi> element in the XML, replying GDB. */
|
/* The value of <osabi> element in the XML, replying GDB. */
|
||||||
const char *osabi = NULL;
|
gdb::unique_xmalloc_ptr<char> osabi;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
target_desc ()
|
target_desc ()
|
||||||
: registers_size (0)
|
: registers_size (0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
~target_desc ();
|
|
||||||
|
|
||||||
bool operator== (const target_desc &other) const;
|
bool operator== (const target_desc &other) const;
|
||||||
|
|
||||||
bool operator!= (const target_desc &other) const
|
bool operator!= (const target_desc &other) const
|
||||||
|
|||||||
Reference in New Issue
Block a user