/* BSD Kernel Data Access Library (libkvm) interface.
- Copyright (C) 2004-2018 Free Software Foundation, Inc.
+ Copyright (C) 2004-2020 Free Software Foundation, Inc.
This file is part of GDB.
#include "frame.h"
#include "regcache.h"
#include "target.h"
+#include "process-stratum-target.h"
#include "value.h"
#include "gdbcore.h"
#include "inferior.h" /* for get_exec_file */
#include "gdbthread.h"
+#include "gdbsupport/pathstuff.h"
#include <fcntl.h>
#include <kvm.h>
Optionally specify the filename of a core dump.")
};
-class bsd_kvm_target final : public target_ops
+class bsd_kvm_target final : public process_stratum_target
{
public:
- bsd_kvm_target ()
- { this->to_stratum = process_stratum; }
+ bsd_kvm_target () = default;
const target_info &info () const override
{ return bsd_kvm_target_info; }
void files_info () override;
bool thread_alive (ptid_t ptid) override;
- const char *pid_to_str (ptid_t) override;
+ std::string pid_to_str (ptid_t) override;
bool has_memory () override { return true; }
bool has_stack () override { return true; }
bsd_kvm_target_open (const char *arg, int from_tty)
{
char errbuf[_POSIX2_LINE_MAX];
- char *execfile = NULL;
+ const char *execfile = NULL;
kvm_t *temp_kd;
char *filename = NULL;
if (arg)
{
- char *temp;
-
filename = tilde_expand (arg);
if (filename[0] != '/')
{
- temp = concat (current_directory, "/", filename, (char *)NULL);
+ gdb::unique_xmalloc_ptr<char> temp (gdb_abspath (filename));
+
xfree (filename);
- filename = temp;
+ filename = temp.release ();
}
}
return true;
}
-const char *
+std::string
bsd_kvm_target::pid_to_str (ptid_t ptid)
{
- static char buf[64];
- xsnprintf (buf, sizeof buf, "<kvm>");
- return buf;
+ return "<kvm>";
}
/* Add the libkvm interface to the list of all possible targets and