GDB (xrefs)
|
#include "defs.h"
#include "top.h"
#include "inferior.h"
#include "target.h"
#include "symfile.h"
#include "symtab.h"
#include "objfiles.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "gdbthread.h"
#include "regcache.h"
#include "event-top.h"
#include "inf-loop.h"
#include <sys/stat.h>
#include "inf-child.h"
#include "value.h"
#include "arch-utils.h"
#include "bfd.h"
#include "bfd/mach-o.h"
#include "gdbarch.h"
#include <copyfile.h>
#include <sys/ptrace.h>
#include <sys/signal.h>
#include <setjmp.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <ctype.h>
#include <sys/sysctl.h>
#include <sys/proc.h>
#include <libproc.h>
#include <sys/syscall.h>
#include <spawn.h>
#include <mach/mach_error.h>
#include <mach/mach_vm.h>
#include <mach/mach_init.h>
#include <mach/vm_map.h>
#include <mach/task.h>
#include <mach/mach_port.h>
#include <mach/thread_act.h>
#include <mach/port.h>
#include "darwin-nat.h"
#include "filenames.h"
#include "gdbsupport/filestuff.h"
#include "gdbsupport/gdb_unlinker.h"
#include "gdbsupport/pathstuff.h"
#include "gdbsupport/scoped_fd.h"
#include "nat/fork-inferior.h"
Go to the source code of this file.
Macros | |
#define | PTRACE(CMD, PID, ADDR, SIG) darwin_ptrace(#CMD, CMD, (PID), (ADDR), (SIG)) |
#define | PAGE_TRUNC(x) ((x) & ~(mach_page_size - 1)) |
#define | PAGE_ROUND(x) PAGE_TRUNC((x) + mach_page_size - 1) |
#define | _POSIX_SPAWN_DISABLE_ASLR 0x0100 |
Functions | |
static void | darwin_ptrace_me (void) |
static void | darwin_encode_reply (mig_reply_error_t *reply, mach_msg_header_t *hdr, integer_t code) |
static void | darwin_setup_request_notification (struct inferior *inf) |
static void | darwin_deallocate_exception_ports (darwin_inferior *inf) |
static void | darwin_setup_exceptions (struct inferior *inf) |
static void | darwin_deallocate_threads (struct inferior *inf) |
static const unsigned char info_plist[] | __attribute__ ((section("__TEXT,__info_plist"), used)) |
static void | inferior_debug (int level, const char *fmt,...) ATTRIBUTE_PRINTF(2 |
void | mach_check_error (kern_return_t ret, const char *file, unsigned int line, const char *func) |
static const char * | unparse_exception_type (unsigned int i) |
static int | darwin_ptrace (const char *name, int request, int pid, caddr_t arg3, int arg4) |
static int | cmp_thread_t (const void *l, const void *r) |
static struct inferior * | darwin_find_inferior_by_task (task_t port) |
static struct inferior * | darwin_find_inferior_by_pid (int pid) |
static darwin_thread_t * | darwin_find_thread (struct inferior *inf, thread_t thread) |
static void | darwin_suspend_inferior (struct inferior *inf) |
static void | darwin_resume_inferior (struct inferior *inf) |
static void | darwin_dump_message (mach_msg_header_t *hdr, int disp_body) |
static struct inferior * | darwin_find_new_inferior (task_t task_port, thread_t thread_port) |
static int | darwin_check_message_ndr (NDR_record_t *ndr) |
static int | darwin_decode_notify_message (mach_msg_header_t *hdr, struct inferior **pinf) |
static void | darwin_send_reply (struct inferior *inf, darwin_thread_t *thread) |
static int | darwin_pthread_kill (darwin_thread_t *thread, int nsignal) |
static void | darwin_resume_thread (struct inferior *inf, darwin_thread_t *thread, int step, int nsignal) |
static void | darwin_resume_inferior_threads (struct inferior *inf, int step, int nsignal) |
static void | darwin_suspend_inferior_threads (struct inferior *inf) |
static void | darwin_reply_to_all_pending_messages (struct inferior *inf) |
static kern_return_t | darwin_save_exception_ports (darwin_inferior *inf) |
static kern_return_t | darwin_restore_exception_ports (darwin_inferior *inf) |
static void | darwin_attach_pid (struct inferior *inf) |
static struct thread_info * | thread_info_from_private_thread_info (darwin_thread_info *pti) |
static void | darwin_pre_ptrace (void) |
static void | darwin_execvp (const char *file, char *const argv[], char *const env[]) |
static bool | may_have_sip () |
static void | copy_shell_to_cache (const char *shell, const std::string &new_name) |
static bool | maybe_cache_shell () |
static void | darwin_setup_fake_stop_event (struct inferior *inf) |
static int | darwin_read_write_inferior (task_t task, CORE_ADDR addr, gdb_byte *rdaddr, const gdb_byte *wraddr, ULONGEST length) |
static void | set_enable_mach_exceptions (const char *args, int from_tty, struct cmd_list_element *c) |
void | _initialize_darwin_nat () |
Variables | |
static task_t | gdb_task |
mach_port_t | darwin_host_self |
mach_port_t | darwin_ex_port |
mach_port_t | darwin_port_set |
static vm_size_t | mach_page_size |
static bool | enable_mach_exceptions |
static struct inferior * | darwin_inf_fake_stop |
static const char * | copied_shell |
static unsigned int | darwin_debug_flag = 0 |
static int | ptrace_fds [2] |
#define _POSIX_SPAWN_DISABLE_ASLR 0x0100 |
#define PAGE_ROUND | ( | x | ) | PAGE_TRUNC((x) + mach_page_size - 1) |
Definition at line 129 of file darwin-nat.c.
Referenced by darwin_read_write_inferior().
#define PAGE_TRUNC | ( | x | ) | ((x) & ~(mach_page_size - 1)) |
Definition at line 128 of file darwin-nat.c.
#define PTRACE | ( | CMD, | |
PID, | |||
ADDR, | |||
SIG ) darwin_ptrace(#CMD, CMD, (PID), (ADDR), (SIG)) |
Definition at line 89 of file darwin-nat.c.
Referenced by darwin_ptrace_me(), darwin_resume_thread(), and darwin_nat_target::detach().
|
static |
void _initialize_darwin_nat | ( | ) |
Definition at line 2463 of file darwin-nat.c.
References add_setshow_boolean_cmd(), add_setshow_zuinteger_cmd(), class_obscure, class_support, darwin_debug_flag, darwin_host_self, enable_mach_exceptions, gdb_task, inferior_debug(), MACH_CHECK_ERROR, mach_page_size, set_enable_mach_exceptions(), setdebuglist, setlist, showdebuglist, and showlist.
|
static |
Definition at line 250 of file darwin-nat.c.
Referenced by darwin_nat_target::check_new_threads().
|
static |
Definition at line 1845 of file darwin-nat.c.
References ldirname().
Referenced by maybe_cache_shell().
|
static |
Definition at line 1588 of file darwin-nat.c.
References darwin_ex_port, darwin_port_set, darwin_setup_exceptions(), darwin_setup_request_notification(), exit_inferior(), gdb_task, get_native_target(), inferior_debug(), darwin_inferior::notify_port, inf::pid, status, switch_to_no_thread(), and darwin_inferior::task.
Referenced by darwin_nat_target::attach(), and darwin_nat_target::ptrace_him().
|
static |
Definition at line 589 of file darwin-nat.c.
Referenced by darwin_decode_notify_message(), and darwin_nat_target::decode_exception_message().
|
static |
Definition at line 1467 of file darwin-nat.c.
References gdb_task, and MACH_CHECK_ERROR.
Referenced by darwin_find_new_inferior(), and darwin_nat_target::mourn_inferior().
|
static |
Definition at line 1327 of file darwin-nat.c.
References gdb_task, get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_nat_target::mourn_inferior().
|
static |
Definition at line 742 of file darwin-nat.c.
References darwin_check_message_ndr(), darwin_find_inferior_by_task(), get_darwin_inferior(), and inferior::priv.
Referenced by darwin_nat_target::decode_message().
|
static |
Definition at line 461 of file darwin-nat.c.
References gdb_printf(), gdb_stdlog, name, and size.
Referenced by darwin_nat_target::wait_1().
|
static |
Definition at line 779 of file darwin-nat.c.
References code.
Referenced by darwin_send_reply(), and darwin_nat_target::decode_exception_message().
|
static |
Definition at line 1788 of file darwin-nat.c.
References _POSIX_SPAWN_DISABLE_ASLR, gdb_printf(), and gdb_stderr.
Referenced by darwin_nat_target::create_inferior().
|
static |
Definition at line 398 of file darwin-nat.c.
References all_inferiors(), inf::pid, and pid.
Referenced by darwin_find_new_inferior().
|
static |
Definition at line 384 of file darwin-nat.c.
References all_inferiors(), get_darwin_inferior(), and inferior::priv.
Referenced by darwin_decode_notify_message(), and darwin_nat_target::decode_exception_message().
Definition at line 541 of file darwin-nat.c.
References darwin_deallocate_exception_ports(), darwin_find_inferior_by_pid(), darwin_setup_exceptions(), darwin_setup_request_notification(), gdb_task, get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_nat_target::decode_exception_message().
|
static |
Definition at line 410 of file darwin-nat.c.
References get_darwin_inferior(), and inferior::priv.
Referenced by darwin_nat_target::decode_exception_message(), and darwin_nat_target::resume().
|
static |
Definition at line 1755 of file darwin-nat.c.
References ptrace_fds.
Referenced by darwin_nat_target::create_inferior().
|
static |
Definition at line 817 of file darwin-nat.c.
References darwin_thread_info::gdb_port.
Referenced by darwin_resume_thread().
|
static |
Definition at line 233 of file darwin-nat.c.
References inferior_debug(), name, pid, and ptrace.
|
static |
Definition at line 1723 of file darwin-nat.c.
References PT_TRACE_ME, PTRACE, ptrace_fds, read(), trace_start_error(), and trace_start_error_with_name().
Referenced by darwin_nat_target::create_inferior().
|
static |
Definition at line 2127 of file darwin-nat.c.
References inferior_debug(), mach_page_size, and PAGE_ROUND.
Referenced by darwin_nat_target::xfer_partial().
|
static |
Definition at line 1389 of file darwin-nat.c.
References DARWIN_MESSAGE, darwin_resume_thread(), get_darwin_inferior(), and inferior::priv.
Referenced by darwin_nat_target::detach(), darwin_nat_target::kill(), and darwin_nat_target::stop_inferior().
|
static |
Definition at line 1447 of file darwin-nat.c.
References inf::task.
Referenced by darwin_nat_target::detach(), darwin_nat_target::kill(), and set_enable_mach_exceptions().
|
static |
Definition at line 445 of file darwin-nat.c.
References get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_nat_target::detach(), darwin_nat_target::kill(), and darwin_nat_target::resume().
|
static |
Definition at line 881 of file darwin-nat.c.
References darwin_resume_thread(), get_darwin_inferior(), and inferior::priv.
Referenced by darwin_nat_target::resume().
|
static |
Definition at line 827 of file darwin-nat.c.
References DARWIN_MESSAGE, darwin_pthread_kill(), DARWIN_RUNNING, darwin_send_reply(), darwin_set_sstep(), DARWIN_STOPPED, darwin_thread_info::gdb_port, inferior_debug(), MACH_CHECK_ERROR, darwin_thread_info::msg_state, inf::pid, PTRACE, darwin_thread_info::signaled, and darwin_thread_info::single_step.
Referenced by darwin_reply_to_all_pending_messages(), darwin_resume_inferior_threads(), and darwin_nat_target::resume().
|
static |
Definition at line 1432 of file darwin-nat.c.
References inf::task.
Referenced by darwin_setup_exceptions().
|
static |
Definition at line 795 of file darwin-nat.c.
References darwin_encode_reply(), get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_resume_thread(), darwin_nat_target::decode_message(), and darwin_nat_target::wait_1().
|
static |
Definition at line 1481 of file darwin-nat.c.
References darwin_ex_port, darwin_save_exception_ports(), enable_mach_exceptions, get_darwin_inferior(), and darwin_inferior::task.
Referenced by darwin_attach_pid(), and darwin_find_new_inferior().
|
static |
Definition at line 2000 of file darwin-nat.c.
References darwin_inf_fake_stop, darwin_thread_info::gdb_port, get_darwin_inferior(), MACH_CHECK_ERROR, and darwin_inferior::threads.
Referenced by darwin_nat_target::attach().
|
static |
Definition at line 1559 of file darwin-nat.c.
References gdb_task, get_darwin_inferior(), darwin_inferior::notify_port, and darwin_inferior::task.
Referenced by darwin_attach_pid(), and darwin_find_new_inferior().
|
static |
Definition at line 427 of file darwin-nat.c.
References get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_nat_target::attach(), darwin_nat_target::resume(), darwin_nat_target::stop_inferior(), and darwin_nat_target::wait_1().
|
static |
Definition at line 893 of file darwin-nat.c.
References DARWIN_MESSAGE, DARWIN_RUNNING, DARWIN_STOPPED, get_darwin_inferior(), MACH_CHECK_ERROR, and inferior::priv.
Referenced by darwin_nat_target::resume().
|
static |
Definition at line 164 of file darwin-nat.c.
References darwin_debug_flag, gdb_printf(), gdb_stdlog, and gdb_vprintf().
Referenced by _initialize_darwin_nat(), darwin_nat_target::cancel_breakpoint(), darwin_nat_target::check_new_threads(), darwin_attach_pid(), darwin_ptrace(), darwin_read_write_inferior(), darwin_resume_thread(), darwin_nat_target::decode_exception_message(), darwin_nat_target::decode_message(), darwin_nat_target::mourn_inferior(), darwin_nat_target::resume(), darwin_nat_target::wait_1(), and darwin_nat_target::xfer_partial().
void mach_check_error | ( | kern_return_t | ret, |
const char * | file, | ||
unsigned int | line, | ||
const char * | func ) |
Definition at line 178 of file darwin-nat.c.
References func.
|
static |
Definition at line 1825 of file darwin-nat.c.
Referenced by darwin_nat_target::create_inferior().
|
static |
Definition at line 1889 of file darwin-nat.c.
References copied_shell, copy_shell_to_cache(), and gdb_printf().
Referenced by darwin_nat_target::create_inferior().
|
static |
Definition at line 2354 of file darwin-nat.c.
References current_inferior(), darwin_ex_port, darwin_restore_exception_ports(), enable_mach_exceptions, get_darwin_inferior(), inferior_ptid, MACH_CHECK_ERROR, and inferior::priv.
Referenced by _initialize_darwin_nat().
|
static |
Definition at line 1688 of file darwin-nat.c.
References all_threads(), darwin_thread_info::gdb_port, and get_darwin_thread_info().
Referenced by darwin_nat_target::init_thread_list().
|
static |
Definition at line 191 of file darwin-nat.c.
Referenced by darwin_nat_target::decode_message().
|
static |
Definition at line 126 of file darwin-nat.c.
Referenced by darwin_nat_target::create_inferior(), and maybe_cache_shell().
|
static |
Definition at line 132 of file darwin-nat.c.
Referenced by _initialize_darwin_nat(), inferior_debug(), and darwin_nat_target::wait_1().
mach_port_t darwin_ex_port |
Definition at line 109 of file darwin-nat.c.
Referenced by darwin_attach_pid(), darwin_setup_exceptions(), darwin_nat_target::decode_exception_message(), info_mach_ports_command(), and set_enable_mach_exceptions().
mach_port_t darwin_host_self |
Definition at line 106 of file darwin-nat.c.
Referenced by _initialize_darwin_nat(), info_mach_exceptions_command(), and info_mach_ports_command().
|
static |
Definition at line 122 of file darwin-nat.c.
Referenced by darwin_setup_fake_stop_event(), and darwin_nat_target::wait_1().
mach_port_t darwin_port_set |
Definition at line 112 of file darwin-nat.c.
Referenced by darwin_attach_pid(), info_mach_ports_command(), and darwin_nat_target::wait_1().
|
static |
Definition at line 119 of file darwin-nat.c.
Referenced by _initialize_darwin_nat(), darwin_setup_exceptions(), and set_enable_mach_exceptions().
|
static |
Definition at line 103 of file darwin-nat.c.
Referenced by _initialize_darwin_nat(), darwin_nat_target::check_new_threads(), darwin_attach_pid(), darwin_deallocate_exception_ports(), darwin_deallocate_threads(), darwin_find_new_inferior(), darwin_setup_request_notification(), darwin_nat_target::get_ada_task_ptid(), and darwin_nat_target::mourn_inferior().
|
static |
Definition at line 115 of file darwin-nat.c.
Referenced by _initialize_darwin_nat(), and darwin_read_write_inferior().
|
static |
Definition at line 1720 of file darwin-nat.c.
Referenced by darwin_pre_ptrace(), darwin_ptrace_me(), and darwin_nat_target::ptrace_him().