Move the thread_section_name class to gdbcore.h.

This allows it to be used outside of corelow.c.
This commit is contained in:
John Baldwin 2017-06-28 10:41:57 -07:00
parent 929edea98d
commit 6e5eab33ab
3 changed files with 50 additions and 45 deletions

View File

@ -1,3 +1,8 @@
2017-07-07 John Baldwin <jhb@FreeBSD.org>
* corelow.c (thread_section_name): Move to ...
* gdbcore.h (thread_section_name): ... here.
2017-07-07 John Baldwin <jhb@FreeBSD.org>
* fbsd-nat.c [PT_LWPINFO && __LP64__] (union sigval32)

View File

@ -485,51 +485,6 @@ core_detach (struct target_ops *ops, const char *args, int from_tty)
printf_filtered (_("No core file now.\n"));
}
/* Build either a single-thread or multi-threaded section name for
PTID.
If ptid's lwp member is zero, we want to do the single-threaded
thing: look for a section named NAME (as passed to the
constructor). If ptid's lwp member is non-zero, we'll want do the
multi-threaded thing: look for a section named "NAME/LWP", where
LWP is the shortest ASCII decimal representation of ptid's lwp
member. */
class thread_section_name
{
public:
/* NAME is the single-threaded section name. If PTID represents an
LWP, then the build section name is "NAME/LWP", otherwise it's
just "NAME" unmodified. */
thread_section_name (const char *name, ptid_t ptid)
{
if (ptid.lwp_p ())
{
m_storage = string_printf ("%s/%ld", name, ptid.lwp ());
m_section_name = m_storage.c_str ();
}
else
m_section_name = name;
}
/* Return the computed section name. The result is valid as long as
this thread_section_name object is live. */
const char *c_str () const
{ return m_section_name; }
/* Disable copy. */
thread_section_name (const thread_section_name &) = delete;
void operator= (const thread_section_name &) = delete;
private:
/* Either a pointer into M_STORAGE, or a pointer to the name passed
as parameter to the constructor. */
const char *m_section_name;
/* If we need to build a new section name, this is where we store
it. */
std::string m_storage;
};
/* Try to retrieve registers from a section in core_bfd, and supply
them to core_vec->core_read_registers, as the register set numbered
WHICH.

View File

@ -226,6 +226,51 @@ struct core_fns
};
/* Build either a single-thread or multi-threaded section name for
PTID.
If ptid's lwp member is zero, we want to do the single-threaded
thing: look for a section named NAME (as passed to the
constructor). If ptid's lwp member is non-zero, we'll want do the
multi-threaded thing: look for a section named "NAME/LWP", where
LWP is the shortest ASCII decimal representation of ptid's lwp
member. */
class thread_section_name
{
public:
/* NAME is the single-threaded section name. If PTID represents an
LWP, then the build section name is "NAME/LWP", otherwise it's
just "NAME" unmodified. */
thread_section_name (const char *name, ptid_t ptid)
{
if (ptid.lwp_p ())
{
m_storage = string_printf ("%s/%ld", name, ptid.lwp ());
m_section_name = m_storage.c_str ();
}
else
m_section_name = name;
}
/* Return the computed section name. The result is valid as long as
this thread_section_name object is live. */
const char *c_str () const
{ return m_section_name; }
/* Disable copy. */
thread_section_name (const thread_section_name &) = delete;
void operator= (const thread_section_name &) = delete;
private:
/* Either a pointer into M_STORAGE, or a pointer to the name passed
as parameter to the constructor. */
const char *m_section_name;
/* If we need to build a new section name, this is where we store
it. */
std::string m_storage;
};
/* NOTE: cagney/2004-04-05: Replaced by "regset.h" and
regset_from_core_section(). */
extern void deprecated_add_core_fns (struct core_fns *cf);