projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Multi-target support
[deliverable/binutils-gdb.git]
/
gdb
/
nto-procfs.c
diff --git
a/gdb/nto-procfs.c
b/gdb/nto-procfs.c
index fcd30016f2cf2c7e64bba892c6aedbf54170e021..c31dbf136c8cb9966c20f33b73ef5a74c97e0d82 100644
(file)
--- a/
gdb/nto-procfs.c
+++ b/
gdb/nto-procfs.c
@@
-1,7
+1,7
@@
/* Machine independent support for QNX Neutrino /proc (process file system)
for GDB. Written by Colin Burgess at QNX Software Systems Limited.
/* Machine independent support for QNX Neutrino /proc (process file system)
for GDB. Written by Colin Burgess at QNX Software Systems Limited.
- Copyright (C) 2003-20
18
Free Software Foundation, Inc.
+ Copyright (C) 2003-20
20
Free Software Foundation, Inc.
Contributed by QNX Software Systems Ltd.
Contributed by QNX Software Systems Ltd.
@@
-42,8
+42,8
@@
#include "regcache.h"
#include "solib.h"
#include "inf-child.h"
#include "regcache.h"
#include "solib.h"
#include "inf-child.h"
-#include "
common
/filestuff.h"
-#include "
common
/scoped_fd.h"
+#include "
gdbsupport
/filestuff.h"
+#include "
gdbsupport
/scoped_fd.h"
#define NULL_PID 0
#define _DEBUG_FLAG_TRACE (_DEBUG_FLAG_TRACE_EXEC|_DEBUG_FLAG_TRACE_RD|\
#define NULL_PID 0
#define _DEBUG_FLAG_TRACE (_DEBUG_FLAG_TRACE_EXEC|_DEBUG_FLAG_TRACE_RD|\
@@
-109,19
+109,16
@@
struct nto_procfs_target : public inf_child_target
void mourn_inferior () override;
void mourn_inferior () override;
- void pass_signals (
int, unsigned char *
) override;
+ void pass_signals (
gdb::array_view<const unsigned char>
) override;
bool thread_alive (ptid_t ptid) override;
void update_thread_list () override;
bool thread_alive (ptid_t ptid) override;
void update_thread_list () override;
-
const char *
pid_to_str (ptid_t) override;
+
std::string
pid_to_str (ptid_t) override;
void interrupt () override;
void interrupt () override;
- bool have_continuable_watchpoint ()
- { return true; }
-
const char *extra_thread_info (struct thread_info *) override;
char *pid_to_exec_file (int pid) override;
const char *extra_thread_info (struct thread_info *) override;
char *pid_to_exec_file (int pid) override;
@@
-146,7
+143,7
@@
class nto_procfs_target_native final : public nto_procfs_target
static const target_info nto_procfs_target_info = {
"procfs",
N_("QNX Neutrino local or remote process"),
static const target_info nto_procfs_target_info = {
"procfs",
N_("QNX Neutrino local or remote process"),
- N_("QNX Neutrino process. target procfs
<node>
")
+ N_("QNX Neutrino process. target procfs
NODE
")
};
struct nto_procfs_target_procfs final : public nto_procfs_target
};
struct nto_procfs_target_procfs final : public nto_procfs_target
@@
-217,8
+214,6
@@
nto_procfs_target::open (const char *arg, int from_tty)
nto_procfs_node = ND_LOCAL_NODE;
nodestr = (arg != NULL) ? xstrdup (arg) : NULL;
nto_procfs_node = ND_LOCAL_NODE;
nodestr = (arg != NULL) ? xstrdup (arg) : NULL;
- init_thread_list ();
-
if (nodestr)
{
nto_procfs_node = netmgr_strtond (nodestr, &endstr);
if (nodestr)
{
nto_procfs_node = netmgr_strtond (nodestr, &endstr);
@@
-296,7
+291,7
@@
procfs_set_thread (ptid_t ptid)
{
pid_t tid;
{
pid_t tid;
- tid = ptid
_get_tid (ptid
);
+ tid = ptid
.tid (
);
devctl (ctl_fd, DCMD_PROC_CURTHREAD, &tid, sizeof (tid), 0);
}
devctl (ctl_fd, DCMD_PROC_CURTHREAD, &tid, sizeof (tid), 0);
}
@@
-310,8
+305,8
@@
nto_procfs_target::thread_alive (ptid_t ptid)
procfs_status status;
int err;
procfs_status status;
int err;
- tid = ptid
_get_tid (ptid
);
- pid = ptid
_get_pid (ptid
);
+ tid = ptid
.tid (
);
+ pid = ptid
.pid (
);
if (kill (pid, 0) == -1)
return false;
if (kill (pid, 0) == -1)
return false;
@@
-398,7
+393,7
@@
nto_procfs_target::update_thread_list ()
prune_threads ();
prune_threads ();
- pid =
ptid_get_pid (inferior_ptid
);
+ pid =
inferior_ptid.pid (
);
status.tid = 1;
status.tid = 1;
@@
-413,8
+408,8
@@
nto_procfs_target::update_thread_list ()
returned different tid, meaning the requested tid no longer exists
(e.g. thread exited). */
continue;
returned different tid, meaning the requested tid no longer exists
(e.g. thread exited). */
continue;
- ptid = ptid_
build
(pid, 0, tid);
- new_thread = find_thread_ptid (ptid);
+ ptid = ptid_
t
(pid, 0, tid);
+ new_thread = find_thread_ptid (
this,
ptid);
if (!new_thread)
new_thread = add_thread (ptid);
update_thread_private_data (new_thread, tid, status.state, 0);
if (!new_thread)
new_thread = add_thread (ptid);
update_thread_private_data (new_thread, tid, status.state, 0);
@@
-610,7
+605,7
@@
procfs_meminfo (const char *args, int from_tty)
if (strcmp (map.info.path, printme.name))
continue;
if (strcmp (map.info.path, printme.name))
continue;
- /* Lower debug_vaddr is always text, if ne
ss
essary, swap. */
+ /* Lower debug_vaddr is always text, if ne
c
essary, swap. */
if ((int) map.info.vaddr < (int) printme.text.debug_vaddr)
{
memcpy (&(printme.data), &(printme.text),
if ((int) map.info.vaddr < (int) printme.text.debug_vaddr)
{
memcpy (&(printme.data), &(printme.text),
@@
-663,7
+658,7
@@
nto_procfs_target::files_info ()
printf_unfiltered ("\tUsing the running image of %s %s via %s.\n",
inf->attach_flag ? "attached" : "child",
printf_unfiltered ("\tUsing the running image of %s %s via %s.\n",
inf->attach_flag ? "attached" : "child",
- target_pid_to_str (inferior_ptid),
+ target_pid_to_str (inferior_ptid)
.c_str ()
,
(nodestr != NULL) ? nodestr : "local node");
}
(nodestr != NULL) ? nodestr : "local node");
}
@@
-698,7
+693,6
@@
nto_procfs_target::pid_to_exec_file (const int pid)
void
nto_procfs_target::attach (const char *args, int from_tty)
{
void
nto_procfs_target::attach (const char *args, int from_tty)
{
- char *exec_file;
int pid;
struct inferior *inf;
int pid;
struct inferior *inf;
@@
-709,18
+703,16
@@
nto_procfs_target::attach (const char *args, int from_tty)
if (from_tty)
{
if (from_tty)
{
-
exec_file = (char *)
get_exec_file (0);
+
const char *exec_file =
get_exec_file (0);
if (exec_file)
printf_unfiltered ("Attaching to program `%s', %s\n", exec_file,
if (exec_file)
printf_unfiltered ("Attaching to program `%s', %s\n", exec_file,
- target_pid_to_str (p
id_to_ptid (pid)
));
+ target_pid_to_str (p
tid_t (pid)).c_str (
));
else
printf_unfiltered ("Attaching to %s\n",
else
printf_unfiltered ("Attaching to %s\n",
- target_pid_to_str (pid_to_ptid (pid)));
-
- gdb_flush (gdb_stdout);
+ target_pid_to_str (ptid_t (pid)).c_str ());
}
}
- inferior_ptid = do_attach (p
id_to_ptid
(pid));
+ inferior_ptid = do_attach (p
tid_t
(pid));
inf = current_inferior ();
inferior_appeared (inf, pid);
inf->attach_flag = 1;
inf = current_inferior ();
inferior_appeared (inf, pid);
inf->attach_flag = 1;
@@
-746,7
+738,7
@@
do_attach (ptid_t ptid)
char path[PATH_MAX];
snprintf (path, PATH_MAX - 1, "%s%s/%d/as",
char path[PATH_MAX];
snprintf (path, PATH_MAX - 1, "%s%s/%d/as",
- (nodestr != NULL) ? nodestr : "", "/proc", ptid
_get_pid (ptid
));
+ (nodestr != NULL) ? nodestr : "", "/proc", ptid
.pid (
));
ctl_fd = open (path, O_RDWR);
if (ctl_fd == -1)
error (_("Couldn't open proc file %s, error %d (%s)"), path, errno,
ctl_fd = open (path, O_RDWR);
if (ctl_fd == -1)
error (_("Couldn't open proc file %s, error %d (%s)"), path, errno,
@@
-764,9
+756,9
@@
do_attach (ptid_t ptid)
if (devctl (ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0) == EOK
&& status.flags & _DEBUG_FLAG_STOPPED)
if (devctl (ctl_fd, DCMD_PROC_STATUS, &status, sizeof (status), 0) == EOK
&& status.flags & _DEBUG_FLAG_STOPPED)
- SignalKill (nto_node (), ptid
_get_pid (ptid
), 0, SIGCONT, 0, 0);
+ SignalKill (nto_node (), ptid
.pid (
), 0, SIGCONT, 0, 0);
nto_init_solib_absolute_prefix ();
nto_init_solib_absolute_prefix ();
- return ptid_
build (ptid_get_pid (ptid
), 0, status.tid);
+ return ptid_
t (ptid.pid (
), 0, status.tid);
}
/* Ask the user what to do when an interrupt is received. */
}
/* Ask the user what to do when an interrupt is received. */
@@
-810,7
+802,7
@@
nto_procfs_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
- if (
ptid_equal (inferior_ptid, null_ptid)
)
+ if (
inferior_ptid == null_ptid
)
{
ourstatus->kind = TARGET_WAITKIND_STOPPED;
ourstatus->value.sig = GDB_SIGNAL_0;
{
ourstatus->kind = TARGET_WAITKIND_STOPPED;
ourstatus->value.sig = GDB_SIGNAL_0;
@@
-873,7
+865,7
@@
nto_procfs_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
{
int waitval = 0;
{
int waitval = 0;
- waitpid (
ptid_get_pid (inferior_ptid
), &waitval, WNOHANG);
+ waitpid (
inferior_ptid.pid (
), &waitval, WNOHANG);
if (exit_signo)
{
/* Abnormal death. */
if (exit_signo)
{
/* Abnormal death. */
@@
-899,7
+891,7
@@
nto_procfs_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus,
}
}
}
}
- return ptid_
build
(status.pid, 0, status.tid);
+ return ptid_
t
(status.pid, 0, status.tid);
}
/* Read the current values of the inferior's registers, both the
}
/* Read the current values of the inferior's registers, both the
@@
-995,9
+987,9
@@
nto_procfs_target::xfer_partial (enum target_object object,
}
/* Fallthru */
default:
}
/* Fallthru */
default:
- return this->beneath->xfer_partial (object, annex,
- readbuf, writebuf, offset, len,
- xfered_len);
+ return this->beneath
()
->xfer_partial (object, annex,
+
readbuf, writebuf, offset, len,
+
xfered_len);
}
}
}
}
@@
-1013,12
+1005,12
@@
nto_procfs_target::detach (inferior *inf, int from_tty)
target_announce_detach ();
if (siggnal)
target_announce_detach ();
if (siggnal)
- SignalKill (nto_node (),
ptid_get_pid (inferior_ptid
), 0, 0, 0, 0);
+ SignalKill (nto_node (),
inferior_ptid.pid (
), 0, 0, 0, 0);
close (ctl_fd);
ctl_fd = -1;
close (ctl_fd);
ctl_fd = -1;
- pid =
ptid_get_pid (inferior_ptid
);
+ pid =
inferior_ptid.pid (
);
inferior_ptid = null_ptid;
detach_inferior (pid);
init_thread_list ();
inferior_ptid = null_ptid;
detach_inferior (pid);
init_thread_list ();
@@
-1079,10
+1071,10
@@
nto_procfs_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
procfs_status status;
sigset_t *run_fault = (sigset_t *) (void *) &run.fault;
procfs_status status;
sigset_t *run_fault = (sigset_t *) (void *) &run.fault;
- if (
ptid_equal (inferior_ptid, null_ptid)
)
+ if (
inferior_ptid == null_ptid
)
return;
return;
- procfs_set_thread (ptid
_equal (ptid, minus_one_ptid)
? inferior_ptid :
+ procfs_set_thread (ptid
== minus_one_ptid
? inferior_ptid :
ptid);
run.flags = _DEBUG_RUN_FAULT | _DEBUG_RUN_TRACE;
ptid);
run.flags = _DEBUG_RUN_FAULT | _DEBUG_RUN_TRACE;
@@
-1113,7
+1105,7
@@
nto_procfs_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
{
if (signal_to_pass != status.info.si_signo)
{
{
if (signal_to_pass != status.info.si_signo)
{
- SignalKill (nto_node (),
ptid_get_pid (inferior_ptid
), 0,
+ SignalKill (nto_node (),
inferior_ptid.pid (
), 0,
signal_to_pass, 0, 0);
run.flags |= _DEBUG_RUN_CLRFLT | _DEBUG_RUN_CLRSIG;
}
signal_to_pass, 0, 0);
run.flags |= _DEBUG_RUN_CLRFLT | _DEBUG_RUN_CLRSIG;
}
@@
-1135,9
+1127,9
@@
nto_procfs_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
void
nto_procfs_target::mourn_inferior ()
{
void
nto_procfs_target::mourn_inferior ()
{
- if (
!ptid_equal (inferior_ptid, null_ptid)
)
+ if (
inferior_ptid != null_ptid
)
{
{
- SignalKill (nto_node (),
ptid_get_pid (inferior_ptid
), 0, SIGKILL, 0, 0);
+ SignalKill (nto_node (),
inferior_ptid.pid (
), 0, SIGKILL, 0, 0);
close (ctl_fd);
}
inferior_ptid = null_ptid;
close (ctl_fd);
}
inferior_ptid = null_ptid;
@@
-1222,7
+1214,7
@@
nto_procfs_target::create_inferior (const char *exec_file,
argv = xmalloc ((allargs.size () / (unsigned) 2 + 2) *
sizeof (*argv));
argv = xmalloc ((allargs.size () / (unsigned) 2 + 2) *
sizeof (*argv));
- argv[0] =
get_exec_file (1
);
+ argv[0] =
const_cast<char *> (get_exec_file (1)
);
if (!argv[0])
{
if (exec_file)
if (!argv[0])
{
if (exec_file)
@@
-1311,7
+1303,7
@@
nto_procfs_target::create_inferior (const char *exec_file,
if (fds[2] != STDERR_FILENO)
close (fds[2]);
if (fds[2] != STDERR_FILENO)
close (fds[2]);
- inferior_ptid = do_attach (p
id_to_ptid
(pid));
+ inferior_ptid = do_attach (p
tid_t
(pid));
procfs_update_thread_list (ops);
inf = current_inferior ();
procfs_update_thread_list (ops);
inf = current_inferior ();
@@
-1324,7
+1316,7
@@
nto_procfs_target::create_inferior (const char *exec_file,
{
/* FIXME: expected warning? */
/* warning( "Failed to set Kill-on-Last-Close flag: errno = %d(%s)\n",
{
/* FIXME: expected warning? */
/* warning( "Failed to set Kill-on-Last-Close flag: errno = %d(%s)\n",
- errn, strerror(errn) ); */
+ errn, s
afe_s
trerror(errn) ); */
}
if (!target_is_pushed (ops))
push_target (ops);
}
if (!target_is_pushed (ops))
push_target (ops);
@@
-1395,7
+1387,7
@@
nto_procfs_target::store_registers (struct regcache *regcache, int regno)
char *data;
ptid_t ptid = regcache->ptid ();
char *data;
ptid_t ptid = regcache->ptid ();
- if (ptid
_equal (ptid, null_ptid)
)
+ if (ptid
== null_ptid
)
return;
procfs_set_thread (ptid);
return;
procfs_set_thread (ptid);
@@
-1434,7
+1426,7
@@
nto_procfs_target::store_registers (struct regcache *regcache, int regno)
if (len < 1)
return;
if (len < 1)
return;
- regcache
_raw_collect (regcache,
regno, (char *) ® + off);
+ regcache
->raw_collect (
regno, (char *) ® + off);
err = devctl (ctl_fd, dev_set, ®, regsize, 0);
if (err != EOK)
err = devctl (ctl_fd, dev_set, ®, regsize, 0);
if (err != EOK)
@@
-1447,7
+1439,8
@@
nto_procfs_target::store_registers (struct regcache *regcache, int regno)
/* Set list of signals to be handled in the target. */
void
/* Set list of signals to be handled in the target. */
void
-nto_procfs_target::pass_signals (int numsigs, unsigned char *pass_signals)
+nto_procfs_target::pass_signals
+ (gdb::array_view<const unsigned char> pass_signals)
{
int signo;
{
int signo;
@@
-1456,22
+1449,19
@@
nto_procfs_target::pass_signals (int numsigs, unsigned char *pass_signals)
for (signo = 1; signo < NSIG; signo++)
{
int target_signo = gdb_signal_from_host (signo);
for (signo = 1; signo < NSIG; signo++)
{
int target_signo = gdb_signal_from_host (signo);
- if (target_signo <
numsigs
&& pass_signals[target_signo])
+ if (target_signo <
pass_signals.size ()
&& pass_signals[target_signo])
sigdelset (&run.trace, signo);
}
}
sigdelset (&run.trace, signo);
}
}
-char *
+std::string
nto_procfs_target::pid_to_str (ptid_t ptid)
{
nto_procfs_target::pid_to_str (ptid_t ptid)
{
- static char buf[1024];
- int pid, tid, n;
+ int pid, tid;
struct tidinfo *tip;
struct tidinfo *tip;
- pid = ptid_get_pid (ptid);
- tid = ptid_get_tid (ptid);
-
- n = snprintf (buf, 1023, "process %d", pid);
+ pid = ptid.pid ();
+ tid = ptid.tid ();
#if 0 /* NYI */
tip = procfs_thread_info (pid, tid);
#if 0 /* NYI */
tip = procfs_thread_info (pid, tid);
@@
-1479,7
+1469,7
@@
nto_procfs_target::pid_to_str (ptid_t ptid)
snprintf (&buf[n], 1023, " (state = 0x%02x)", tip->state);
#endif
snprintf (&buf[n], 1023, " (state = 0x%02x)", tip->state);
#endif
- return
buf
;
+ return
string_printf ("process %d", pid)
;
}
/* to_can_run implementation for "target procfs". Note this really
}
/* to_can_run implementation for "target procfs". Note this really
This page took
0.031878 seconds
and
4
git commands to generate.