/* Darwin support for GDB, the GNU debugger.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ Copyright (C) 1997-2020 Free Software Foundation, Inc.
Contributed by Apple Computer, Inc.
#include "value.h"
#include "gdbcmd.h"
#include "inferior.h"
+#include "gdbarch.h"
#include <sys/sysctl.h>
if (args == NULL || *args == 0)
{
- if (ptid_equal (inferior_ptid, null_ptid))
+ if (inferior_ptid == null_ptid)
printf_unfiltered (_("No inferior running\n"));
- return current_inferior ()->priv->task;
+
+ darwin_inferior *priv = get_darwin_inferior (current_inferior ());
+
+ return priv->task;
}
if (strcmp (args, "gdb") == 0)
return mach_task_self ();
printf_unfiltered (_(" gdb-exception"));
else if (port == darwin_port_set)
printf_unfiltered (_(" gdb-port_set"));
- else if (!ptid_equal (inferior_ptid, null_ptid))
+ else if (inferior_ptid != null_ptid)
{
struct inferior *inf = current_inferior ();
+ darwin_inferior *priv = get_darwin_inferior (inf);
- if (port == inf->priv->task)
+ if (port == priv->task)
printf_unfiltered (_(" inferior-task"));
- else if (port == inf->priv->notify_port)
+ else if (port == priv->notify_port)
printf_unfiltered (_(" inferior-notify"));
else
{
- int k;
- darwin_thread_t *t;
-
- for (k = 0; k < inf->priv->exception_info.count; k++)
- if (port == inf->priv->exception_info.ports[k])
+ for (int k = 0; k < priv->exception_info.count; k++)
+ if (port == priv->exception_info.ports[k])
{
printf_unfiltered (_(" inferior-excp-port"));
break;
}
- if (inf->priv->threads)
+ for (darwin_thread_t *t : priv->threads)
{
- for (k = 0;
- VEC_iterate(darwin_thread_t,
- inf->priv->threads, k, t);
- k++)
- if (port == t->gdb_port)
- {
- printf_unfiltered (_(" inferior-thread for 0x%x"),
- inf->priv->task);
- break;
- }
+ if (port == t->gdb_port)
+ {
+ printf_unfiltered (_(" inferior-thread for 0x%x"),
+ priv->task);
+ break;
+ }
}
+
}
}
}
static void
darwin_debug_regions_recurse (task_t task)
{
- mach_vm_address_t r_addr;
mach_vm_address_t r_start;
mach_vm_size_t r_size;
natural_t r_depth;
mach_msg_type_number_t r_info_size;
vm_region_submap_short_info_data_64_t r_info;
kern_return_t kret;
- int ret;
struct ui_out *uiout = current_uiout;
ui_out_emit_table table_emitter (uiout, 9, -1, "regions");
unparse_inheritance (r_info.inheritance));
uiout->field_string ("share-mode",
unparse_share_mode (r_info.share_mode));
- uiout->field_int ("depth", r_depth);
+ uiout->field_signed ("depth", r_depth);
uiout->field_string ("submap",
r_info.is_submap ? _("sm ") : _("obj"));
tag = unparse_user_tag (r_info.user_tag);
if (tag)
uiout->field_string ("tag", tag);
else
- uiout->field_int ("tag", r_info.user_tag);
+ uiout->field_signed ("tag", r_info.user_tag);
}
- if (!uiout->is_mi_like_p ())
- uiout->text ("\n");
+ uiout->text ("\n");
if (r_info.is_submap)
r_depth++;
}
address = value_as_address (val);
- if (ptid_equal (inferior_ptid, null_ptid))
+ if (inferior_ptid == null_ptid)
error (_("Inferior not available"));
inf = current_inferior ();
- darwin_debug_region (inf->priv->task, address);
+ darwin_inferior *priv = get_darwin_inferior (inf);
+ darwin_debug_region (priv->task, address);
}
static void
static void
info_mach_exceptions_command (const char *args, int from_tty)
{
- int i;
- task_t task;
kern_return_t kret;
darwin_exception_info info;
{
if (strcmp (args, "saved") == 0)
{
- if (ptid_equal (inferior_ptid, null_ptid))
+ if (inferior_ptid == null_ptid)
printf_unfiltered (_("No inferior running\n"));
- disp_exception (¤t_inferior ()->priv->exception_info);
+
+ darwin_inferior *priv = get_darwin_inferior (current_inferior ());
+
+ disp_exception (&priv->exception_info);
return;
}
else if (strcmp (args, "host") == 0)
{
- /* FIXME: This need a privilegied host port! */
+ /* FIXME: This needs a privileged host port! */
kret = host_get_exception_ports
(darwin_host_self, EXC_MASK_ALL, info.masks,
&info.count, info.ports, info.behaviors, info.flavors);
{
struct inferior *inf;
- if (ptid_equal (inferior_ptid, null_ptid))
+ if (inferior_ptid == null_ptid)
printf_unfiltered (_("No inferior running\n"));
inf = current_inferior ();
+ darwin_inferior *priv = get_darwin_inferior (inf);
+
kret = task_get_exception_ports
- (inf->priv->task, EXC_MASK_ALL, info.masks,
+ (priv->task, EXC_MASK_ALL, info.masks,
&info.count, info.ports, info.behaviors, info.flavors);
MACH_CHECK_ERROR (kret);
disp_exception (&info);
}
}
+void _initialize_darwin_info_commands ();
void
-_initialize_darwin_info_commands (void)
+_initialize_darwin_info_commands ()
{
add_info ("mach-tasks", info_mach_tasks_command,
_("Get list of tasks in system."));