GDB (xrefs)
Loading...
Searching...
No Matches
Macros | Functions | Variables
/tmp/gdb-13.1/gdb/darwin-nat.c File Reference
#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 inferiordarwin_find_inferior_by_task (task_t port)
 
static struct inferiordarwin_find_inferior_by_pid (int pid)
 
static darwin_thread_tdarwin_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 inferiordarwin_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_infothread_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 inferiordarwin_inf_fake_stop
 
static const char * copied_shell
 
static unsigned int darwin_debug_flag = 0
 
static int ptrace_fds [2]
 

Macro Definition Documentation

◆ _POSIX_SPAWN_DISABLE_ASLR

#define _POSIX_SPAWN_DISABLE_ASLR   0x0100

◆ PAGE_ROUND

#define PAGE_ROUND (   x)    PAGE_TRUNC((x) + mach_page_size - 1)

Definition at line 129 of file darwin-nat.c.

◆ PAGE_TRUNC

#define PAGE_TRUNC (   x)    ((x) & ~(mach_page_size - 1))

Definition at line 128 of file darwin-nat.c.

◆ PTRACE

#define PTRACE (   CMD,
  PID,
  ADDR,
  SIG 
)     darwin_ptrace(#CMD, CMD, (PID), (ADDR), (SIG))

Definition at line 89 of file darwin-nat.c.

Function Documentation

◆ __attribute__()

static const unsigned char info_plist[] __attribute__ ( (section("__TEXT,__info_plist"), used)  )
static

◆ _initialize_darwin_nat()

void _initialize_darwin_nat ( )

◆ cmp_thread_t()

static int cmp_thread_t ( const void *  l,
const void *  r 
)
static

Definition at line 250 of file darwin-nat.c.

Referenced by darwin_nat_target::check_new_threads().

◆ copy_shell_to_cache()

static void copy_shell_to_cache ( const char *  shell,
const std::string &  new_name 
)
static

Definition at line 1844 of file darwin-nat.c.

References ldirname().

Referenced by maybe_cache_shell().

◆ darwin_attach_pid()

static void darwin_attach_pid ( struct inferior inf)
static

◆ darwin_check_message_ndr()

static int darwin_check_message_ndr ( NDR_record_t *  ndr)
static

◆ darwin_deallocate_exception_ports()

static void darwin_deallocate_exception_ports ( darwin_inferior inf)
static

Definition at line 1466 of file darwin-nat.c.

References gdb_task, and MACH_CHECK_ERROR.

Referenced by darwin_find_new_inferior(), and darwin_nat_target::mourn_inferior().

◆ darwin_deallocate_threads()

static void darwin_deallocate_threads ( struct inferior inf)
static

◆ darwin_decode_notify_message()

static int darwin_decode_notify_message ( mach_msg_header_t *  hdr,
struct inferior **  pinf 
)
static

◆ darwin_dump_message()

static void darwin_dump_message ( mach_msg_header_t *  hdr,
int  disp_body 
)
static

Definition at line 460 of file darwin-nat.c.

References gdb_printf(), gdb_stdlog, name, and size.

Referenced by darwin_nat_target::wait_1().

◆ darwin_encode_reply()

static void darwin_encode_reply ( mig_reply_error_t *  reply,
mach_msg_header_t *  hdr,
integer_t  code 
)
static

Definition at line 778 of file darwin-nat.c.

References code.

Referenced by darwin_send_reply(), and darwin_nat_target::decode_exception_message().

◆ darwin_execvp()

static void darwin_execvp ( const char *  file,
char *const  argv[],
char *const  env[] 
)
static

Definition at line 1787 of file darwin-nat.c.

References _POSIX_SPAWN_DISABLE_ASLR, gdb_printf(), and gdb_stderr.

Referenced by darwin_nat_target::create_inferior().

◆ darwin_find_inferior_by_pid()

static struct inferior * darwin_find_inferior_by_pid ( int  pid)
static

Definition at line 397 of file darwin-nat.c.

References all_inferiors(), inf::pid, and pid.

Referenced by darwin_find_new_inferior().

◆ darwin_find_inferior_by_task()

static struct inferior * darwin_find_inferior_by_task ( task_t  port)
static

◆ darwin_find_new_inferior()

static struct inferior * darwin_find_new_inferior ( task_t  task_port,
thread_t  thread_port 
)
static

◆ darwin_find_thread()

static darwin_thread_t * darwin_find_thread ( struct inferior inf,
thread_t  thread 
)
static

◆ darwin_pre_ptrace()

static void darwin_pre_ptrace ( void  )
static

Definition at line 1754 of file darwin-nat.c.

References ptrace_fds.

Referenced by darwin_nat_target::create_inferior().

◆ darwin_pthread_kill()

static int darwin_pthread_kill ( darwin_thread_t thread,
int  nsignal 
)
static

Definition at line 816 of file darwin-nat.c.

References darwin_thread_info::gdb_port.

Referenced by darwin_resume_thread().

◆ darwin_ptrace()

static int darwin_ptrace ( const char *  name,
int  request,
int  pid,
caddr_t  arg3,
int  arg4 
)
static

Definition at line 233 of file darwin-nat.c.

References inferior_debug(), name, pid, and ptrace.

◆ darwin_ptrace_me()

static void darwin_ptrace_me ( void  )
static

◆ darwin_read_write_inferior()

static int darwin_read_write_inferior ( task_t  task,
CORE_ADDR  addr,
gdb_byte *  rdaddr,
const gdb_byte *  wraddr,
ULONGEST  length 
)
static

Definition at line 2126 of file darwin-nat.c.

References inferior_debug(), mach_page_size, and PAGE_ROUND.

Referenced by darwin_nat_target::xfer_partial().

◆ darwin_reply_to_all_pending_messages()

static void darwin_reply_to_all_pending_messages ( struct inferior inf)
static

◆ darwin_restore_exception_ports()

static kern_return_t darwin_restore_exception_ports ( darwin_inferior inf)
static

◆ darwin_resume_inferior()

static void darwin_resume_inferior ( struct inferior inf)
static

◆ darwin_resume_inferior_threads()

static void darwin_resume_inferior_threads ( struct inferior inf,
int  step,
int  nsignal 
)
static

Definition at line 880 of file darwin-nat.c.

References darwin_resume_thread(), get_darwin_inferior(), and inferior::priv.

Referenced by darwin_nat_target::resume().

◆ darwin_resume_thread()

static void darwin_resume_thread ( struct inferior inf,
darwin_thread_t thread,
int  step,
int  nsignal 
)
static

◆ darwin_save_exception_ports()

static kern_return_t darwin_save_exception_ports ( darwin_inferior inf)
static

Definition at line 1431 of file darwin-nat.c.

References inf::task.

Referenced by darwin_setup_exceptions().

◆ darwin_send_reply()

static void darwin_send_reply ( struct inferior inf,
darwin_thread_t thread 
)
static

◆ darwin_setup_exceptions()

static void darwin_setup_exceptions ( struct inferior inf)
static

◆ darwin_setup_fake_stop_event()

static void darwin_setup_fake_stop_event ( struct inferior inf)
static

◆ darwin_setup_request_notification()

static void darwin_setup_request_notification ( struct inferior inf)
static

◆ darwin_suspend_inferior()

static void darwin_suspend_inferior ( struct inferior inf)
static

◆ darwin_suspend_inferior_threads()

static void darwin_suspend_inferior_threads ( struct inferior inf)
static

◆ inferior_debug()

static void static void inferior_debug ( int  level,
const char *  fmt,
  ... 
)
static

◆ mach_check_error()

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.

◆ may_have_sip()

static bool may_have_sip ( )
static

Definition at line 1824 of file darwin-nat.c.

Referenced by darwin_nat_target::create_inferior().

◆ maybe_cache_shell()

static bool maybe_cache_shell ( )
static

Definition at line 1888 of file darwin-nat.c.

References copied_shell, copy_shell_to_cache(), and gdb_printf().

Referenced by darwin_nat_target::create_inferior().

◆ set_enable_mach_exceptions()

static void set_enable_mach_exceptions ( const char *  args,
int  from_tty,
struct cmd_list_element c 
)
static

◆ thread_info_from_private_thread_info()

static struct thread_info * thread_info_from_private_thread_info ( darwin_thread_info pti)
static

◆ unparse_exception_type()

static const char * unparse_exception_type ( unsigned int  i)
static

Definition at line 191 of file darwin-nat.c.

Referenced by darwin_nat_target::decode_message().

Variable Documentation

◆ copied_shell

const char* copied_shell
static

Definition at line 126 of file darwin-nat.c.

Referenced by darwin_nat_target::create_inferior(), and maybe_cache_shell().

◆ darwin_debug_flag

unsigned int darwin_debug_flag = 0
static

Definition at line 132 of file darwin-nat.c.

Referenced by _initialize_darwin_nat(), inferior_debug(), and darwin_nat_target::wait_1().

◆ darwin_ex_port

mach_port_t darwin_ex_port

◆ darwin_host_self

mach_port_t darwin_host_self

◆ darwin_inf_fake_stop

struct inferior* darwin_inf_fake_stop
static

Definition at line 122 of file darwin-nat.c.

Referenced by darwin_setup_fake_stop_event(), and darwin_nat_target::wait_1().

◆ darwin_port_set

mach_port_t darwin_port_set

◆ enable_mach_exceptions

bool enable_mach_exceptions
static

◆ gdb_task

task_t gdb_task
static

◆ mach_page_size

vm_size_t mach_page_size
static

Definition at line 115 of file darwin-nat.c.

Referenced by _initialize_darwin_nat(), and darwin_read_write_inferior().

◆ ptrace_fds

int ptrace_fds[2]
static