X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=gdb%2Fnto-procfs.c;h=40959d7715dd82089658d6b184b023166cb9ec11;hb=adc6a863a9c6c828425d63b12d553f0e8f21e350;hp=c1b38e861629cdc13f3e471ce5902f3f876f77b6;hpb=fd79271bd9dd6bb1626fb6f5ec3a415dc24950b1;p=thirdparty%2Fbinutils-gdb.git diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c index c1b38e86162..40959d7715d 100644 --- 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. - Copyright (C) 2003-2018 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. Contributed by QNX Software Systems Ltd. @@ -109,7 +109,7 @@ struct nto_procfs_target : public inf_child_target void mourn_inferior () override; - void pass_signals (int, unsigned char *) override; + void pass_signals (gdb::array_view) override; bool thread_alive (ptid_t ptid) override; @@ -119,9 +119,6 @@ struct nto_procfs_target : public inf_child_target 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; @@ -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"), - N_("QNX Neutrino process. target procfs ") + N_("QNX Neutrino process. target procfs NODE") }; 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; - init_thread_list (); - if (nodestr) { nto_procfs_node = netmgr_strtond (nodestr, &endstr); @@ -296,7 +291,7 @@ procfs_set_thread (ptid_t ptid) { pid_t tid; - tid = ptid_get_tid (ptid); + tid = ptid.tid (); 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; - tid = ptid_get_tid (ptid); - pid = ptid_get_pid (ptid); + tid = ptid.tid (); + pid = ptid.pid (); if (kill (pid, 0) == -1) return false; @@ -398,7 +393,7 @@ nto_procfs_target::update_thread_list () prune_threads (); - pid = ptid_get_pid (inferior_ptid); + pid = inferior_ptid.pid (); status.tid = 1; @@ -713,14 +708,14 @@ nto_procfs_target::attach (const char *args, int from_tty) if (exec_file) printf_unfiltered ("Attaching to program `%s', %s\n", exec_file, - target_pid_to_str (pid_to_ptid (pid))); + target_pid_to_str (ptid_t (pid))); else printf_unfiltered ("Attaching to %s\n", - target_pid_to_str (pid_to_ptid (pid))); + target_pid_to_str (ptid_t (pid))); gdb_flush (gdb_stdout); } - inferior_ptid = do_attach (pid_to_ptid (pid)); + inferior_ptid = do_attach (ptid_t (pid)); inf = current_inferior (); inferior_appeared (inf, pid); inf->attach_flag = 1; @@ -746,7 +741,7 @@ do_attach (ptid_t ptid) 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, @@ -764,9 +759,9 @@ do_attach (ptid_t ptid) 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 (); - return ptid_t (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. */ @@ -810,7 +805,7 @@ nto_procfs_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, 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; @@ -873,7 +868,7 @@ nto_procfs_target::wait (ptid_t ptid, struct target_waitstatus *ourstatus, { int waitval = 0; - waitpid (ptid_get_pid (inferior_ptid), &waitval, WNOHANG); + waitpid (inferior_ptid.pid (), &waitval, WNOHANG); if (exit_signo) { /* Abnormal death. */ @@ -1013,12 +1008,12 @@ nto_procfs_target::detach (inferior *inf, int from_tty) 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; - pid = ptid_get_pid (inferior_ptid); + pid = inferior_ptid.pid (); inferior_ptid = null_ptid; detach_inferior (pid); init_thread_list (); @@ -1079,10 +1074,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; - if (ptid_equal (inferior_ptid, null_ptid)) + if (inferior_ptid == null_ptid) 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; @@ -1113,7 +1108,7 @@ nto_procfs_target::resume (ptid_t ptid, int step, enum gdb_signal 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; } @@ -1135,9 +1130,9 @@ nto_procfs_target::resume (ptid_t ptid, int step, enum gdb_signal signo) 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; @@ -1311,7 +1306,7 @@ nto_procfs_target::create_inferior (const char *exec_file, if (fds[2] != STDERR_FILENO) close (fds[2]); - inferior_ptid = do_attach (pid_to_ptid (pid)); + inferior_ptid = do_attach (ptid_t (pid)); procfs_update_thread_list (ops); inf = current_inferior (); @@ -1395,7 +1390,7 @@ nto_procfs_target::store_registers (struct regcache *regcache, int regno) char *data; ptid_t ptid = regcache->ptid (); - if (ptid_equal (ptid, null_ptid)) + if (ptid == null_ptid) return; procfs_set_thread (ptid); @@ -1447,7 +1442,8 @@ nto_procfs_target::store_registers (struct regcache *regcache, int regno) /* 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 pass_signals) { int signo; @@ -1456,7 +1452,7 @@ 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); - if (target_signo < numsigs && pass_signals[target_signo]) + if (target_signo < pass_signals.size () && pass_signals[target_signo]) sigdelset (&run.trace, signo); } } @@ -1468,8 +1464,8 @@ nto_procfs_target::pid_to_str (ptid_t ptid) int pid, tid, n; struct tidinfo *tip; - pid = ptid_get_pid (ptid); - tid = ptid_get_tid (ptid); + pid = ptid.pid (); + tid = ptid.tid (); n = snprintf (buf, 1023, "process %d", pid);