/* Solaris threads debugging interface.
- Copyright (C) 1996-2020 Free Software Foundation, Inc.
+ Copyright (C) 1996-2022 Free Software Foundation, Inc.
This file is part of GDB.
void resume (ptid_t, int, enum gdb_signal) override;
void mourn_inferior () override;
std::string pid_to_str (ptid_t) override;
- ptid_t get_ada_task_ptid (long lwp, long thread) override;
+ ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override;
void fetch_registers (struct regcache *, int) override;
void store_registers (struct regcache *, int) override;
sol_thread_active = 0;
inferior_ptid = ptid_t (main_ph.ptid.pid ());
- unpush_target (this);
+ inf->unpush_target (this);
beneath->detach (inf, from_tty);
}
ptid_t rtnval = beneath ()->wait (ptid, ourstatus, options);
- if (ourstatus->kind != TARGET_WAITKIND_EXITED)
+ if (ourstatus->kind () != TARGET_WAITKIND_EXITED)
{
/* Map the LWP of interest back to the appropriate thread ID. */
ptid_t thr_ptid = lwp_to_thread (rtnval);
if (inferior_ptid.tid_p () || !target_thread_alive (inferior_ptid))
{
/* It's either a thread or an LWP that isn't alive. Any live
- LWP will do so use the first available.
+ LWP will do so use the first available.
NOTE: We don't need to call switch_to_thread; we're just
reading memory. */
break;
case TD_OK:
- printf_unfiltered (_("[Thread debugging using libthread_db enabled]\n"));
+ gdb_printf (_("[Thread debugging using libthread_db enabled]\n"));
/* The thread library was detected. Activate the sol_thread target. */
- push_target (&sol_thread_ops);
+ current_inferior ()->push_target (&sol_thread_ops);
sol_thread_active = 1;
main_ph.ptid = inferior_ptid; /* Save for xfer_memory. */
sol_thread_active = 0;
- unpush_target (this);
+ current_inferior ()->unpush_target (this);
beneath->mourn_inferior ();
}
if (!ms.minsym)
return PS_NOSYM;
- *ld_symbol_addr = BMSYMBOL_VALUE_ADDRESS (ms);
+ *ld_symbol_addr = ms.value_address ();
return PS_OK;
}
if (inferior_ptid.tid_p () || !target_thread_alive (inferior_ptid))
{
/* It's either a thread or an LWP that isn't alive. Any live
- LWP will do so use the first available.
+ LWP will do so use the first available.
NOTE: We don't need to call switch_to_thread; we're just
reading memory. */
va_start (args, fmt);
- vfprintf_filtered (gdb_stderr, fmt, args);
+ gdb_vprintf (gdb_stderr, fmt, args);
}
/* Get size of extra register set. Currently a noop. */
ret = p_td_thr_get_info (th, &ti);
if (ret == TD_OK)
{
- printf_filtered ("%s thread #%d, lwp %d, ",
- ti.ti_type == TD_THR_SYSTEM ? "system" : "user ",
- ti.ti_tid, ti.ti_lid);
+ gdb_printf ("%s thread #%d, lwp %d, ",
+ ti.ti_type == TD_THR_SYSTEM ? "system" : "user ",
+ ti.ti_tid, ti.ti_lid);
switch (ti.ti_state)
{
default:
case TD_THR_UNKNOWN:
- printf_filtered ("<unknown state>");
+ gdb_printf ("<unknown state>");
break;
case TD_THR_STOPPED:
- printf_filtered ("(stopped)");
+ gdb_printf ("(stopped)");
break;
case TD_THR_RUN:
- printf_filtered ("(run) ");
+ gdb_printf ("(run) ");
break;
case TD_THR_ACTIVE:
- printf_filtered ("(active) ");
+ gdb_printf ("(active) ");
break;
case TD_THR_ZOMBIE:
- printf_filtered ("(zombie) ");
+ gdb_printf ("(zombie) ");
break;
case TD_THR_SLEEP:
- printf_filtered ("(asleep) ");
+ gdb_printf ("(asleep) ");
break;
case TD_THR_STOPPED_ASLEEP:
- printf_filtered ("(stopped asleep)");
+ gdb_printf ("(stopped asleep)");
break;
}
/* Print thr_create start function. */
const struct bound_minimal_symbol msym
= lookup_minimal_symbol_by_pc (ti.ti_startfunc);
- printf_filtered (" startfunc=%s",
- msym.minsym
- ? msym.minsym->print_name ()
- : paddress (target_gdbarch (), ti.ti_startfunc));
+ gdb_printf (" startfunc=%s",
+ msym.minsym
+ ? msym.minsym->print_name ()
+ : paddress (target_gdbarch (), ti.ti_startfunc));
}
/* If thread is asleep, print function that went to sleep. */
const struct bound_minimal_symbol msym
= lookup_minimal_symbol_by_pc (ti.ti_pc);
- printf_filtered (" sleepfunc=%s",
- msym.minsym
- ? msym.minsym->print_name ()
- : paddress (target_gdbarch (), ti.ti_pc));
+ gdb_printf (" sleepfunc=%s",
+ msym.minsym
+ ? msym.minsym->print_name ()
+ : paddress (target_gdbarch (), ti.ti_pc));
}
- printf_filtered ("\n");
+ gdb_printf ("\n");
}
else
warning (_("info sol-thread: failed to get info for thread."));
static int
thread_db_find_thread_from_tid (struct thread_info *thread, void *data)
{
- long *tid = (long *) data;
+ ULONGEST *tid = (ULONGEST *) data;
if (thread->ptid.tid () == *tid)
return 1;
}
ptid_t
-sol_thread_target::get_ada_task_ptid (long lwp, long thread)
+sol_thread_target::get_ada_task_ptid (long lwp, ULONGEST thread)
{
struct thread_info *thread_info =
iterate_over_threads (thread_db_find_thread_from_tid, &thread);
if (thread_info == NULL)
{
/* The list of threads is probably not up to date. Find any
- thread that is missing from the list, and try again. */
+ thread that is missing from the list, and try again. */
update_thread_list ();
thread_info = iterate_over_threads (thread_db_find_thread_from_tid,
- &thread);
+ &thread);
}
gdb_assert (thread_info != NULL);
_("Show info on Solaris user threads."), &maintenanceinfolist);
/* Hook into new_objfile notification. */
- gdb::observers::new_objfile.attach (sol_thread_new_objfile);
+ gdb::observers::new_objfile.attach (sol_thread_new_objfile, "sol-thread");
return;
die:
- fprintf_unfiltered (gdb_stderr, "\
+ gdb_printf (gdb_stderr, "\
[GDB will not be able to debug user-mode threads: %s]\n", dlerror ());
if (dlhandle)