OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [darwin-nat.h] - Diff between revs 834 and 842

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 834 Rev 842
/* Common things used by the various darwin files
/* Common things used by the various darwin files
   Copyright (C) 1995, 1996, 1997, 1999, 2000, 2007, 2008, 2009, 2010
   Copyright (C) 1995, 1996, 1997, 1999, 2000, 2007, 2008, 2009, 2010
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
 
 
   This program is free software; you can redistribute it and/or modify
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.
   (at your option) any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
*/
 
 
#ifndef __DARWIN_NAT_H__
#ifndef __DARWIN_NAT_H__
#define __DARWIN_NAT_H__
#define __DARWIN_NAT_H__
 
 
#include <mach/mach.h>
#include <mach/mach.h>
#include "gdb_assert.h"
#include "gdb_assert.h"
 
 
/* Describe the mach exception handling state for a task.  This state is saved
/* Describe the mach exception handling state for a task.  This state is saved
   before being changed and restored when a process is detached.
   before being changed and restored when a process is detached.
   For more information on these fields see task_get_exception_ports manual
   For more information on these fields see task_get_exception_ports manual
   page.  */
   page.  */
struct darwin_exception_info
struct darwin_exception_info
{
{
  /* Exceptions handled by the port.  */
  /* Exceptions handled by the port.  */
  exception_mask_t masks[EXC_TYPES_COUNT];
  exception_mask_t masks[EXC_TYPES_COUNT];
 
 
  /* Ports receiving exception messages.  */
  /* Ports receiving exception messages.  */
  mach_port_t ports[EXC_TYPES_COUNT];
  mach_port_t ports[EXC_TYPES_COUNT];
 
 
  /* Type of messages sent.  */
  /* Type of messages sent.  */
  exception_behavior_t behaviors[EXC_TYPES_COUNT];
  exception_behavior_t behaviors[EXC_TYPES_COUNT];
 
 
  /* Type of state to be sent.  */
  /* Type of state to be sent.  */
  thread_state_flavor_t flavors[EXC_TYPES_COUNT];
  thread_state_flavor_t flavors[EXC_TYPES_COUNT];
 
 
  /* Number of elements set.  */
  /* Number of elements set.  */
  mach_msg_type_number_t count;
  mach_msg_type_number_t count;
};
};
typedef struct darwin_exception_info darwin_exception_info;
typedef struct darwin_exception_info darwin_exception_info;
 
 
struct darwin_exception_msg
struct darwin_exception_msg
{
{
  mach_msg_header_t header;
  mach_msg_header_t header;
 
 
  /* Thread and task taking the exception.  */
  /* Thread and task taking the exception.  */
  mach_port_t thread_port;
  mach_port_t thread_port;
  mach_port_t task_port;
  mach_port_t task_port;
 
 
  /* Type of the exception.  */
  /* Type of the exception.  */
  exception_type_t ex_type;
  exception_type_t ex_type;
 
 
  /* Machine dependent details.  */
  /* Machine dependent details.  */
  mach_msg_type_number_t data_count;
  mach_msg_type_number_t data_count;
  integer_t ex_data[2];
  integer_t ex_data[2];
};
};
 
 
enum darwin_msg_state { DARWIN_RUNNING, DARWIN_STOPPED, DARWIN_MESSAGE };
enum darwin_msg_state { DARWIN_RUNNING, DARWIN_STOPPED, DARWIN_MESSAGE };
 
 
struct private_thread_info
struct private_thread_info
{
{
  /* The thread port from a GDB point of view.  */
  /* The thread port from a GDB point of view.  */
  thread_t gdb_port;
  thread_t gdb_port;
 
 
  /* The thread port from the inferior point of view.  Not to be used inside
  /* The thread port from the inferior point of view.  Not to be used inside
     gdb except for get_ada_task_ptid.  */
     gdb except for get_ada_task_ptid.  */
  thread_t inf_port;
  thread_t inf_port;
 
 
  /* Current message state.
  /* Current message state.
     If the kernel has sent a message it expects a reply and the inferior
     If the kernel has sent a message it expects a reply and the inferior
     can't be killed before.  */
     can't be killed before.  */
  enum darwin_msg_state msg_state;
  enum darwin_msg_state msg_state;
 
 
  /* True if this thread is single-stepped.  */
  /* True if this thread is single-stepped.  */
  unsigned char single_step;
  unsigned char single_step;
 
 
  /* True if a signal was manually sent to the thread.  */
  /* True if a signal was manually sent to the thread.  */
  unsigned char signaled;
  unsigned char signaled;
 
 
  /* The last exception received.  */
  /* The last exception received.  */
  struct darwin_exception_msg event;
  struct darwin_exception_msg event;
};
};
typedef struct private_thread_info darwin_thread_t;
typedef struct private_thread_info darwin_thread_t;
 
 
/* Define the threads vector type.  */
/* Define the threads vector type.  */
DEF_VEC_O (darwin_thread_t);
DEF_VEC_O (darwin_thread_t);
 
 
 
 
/* Describe an inferior.  */
/* Describe an inferior.  */
struct private_inferior
struct private_inferior
{
{
  /* Corresponding task port.  */
  /* Corresponding task port.  */
  task_t task;
  task_t task;
 
 
  /* Port which will receive the dead-name notification for the task port.
  /* Port which will receive the dead-name notification for the task port.
     This is used to detect the death of the task.  */
     This is used to detect the death of the task.  */
  mach_port_t notify_port;
  mach_port_t notify_port;
 
 
  /* Initial exception handling.  */
  /* Initial exception handling.  */
  darwin_exception_info exception_info;
  darwin_exception_info exception_info;
 
 
  /* Number of messages that have been received but not yet replied.  */
  /* Number of messages that have been received but not yet replied.  */
  unsigned int pending_messages;
  unsigned int pending_messages;
 
 
  /* Set if inferior is not controlled by ptrace(2) but through Mach.  */
  /* Set if inferior is not controlled by ptrace(2) but through Mach.  */
  unsigned char no_ptrace;
  unsigned char no_ptrace;
 
 
  /* True if this task is suspended.  */
  /* True if this task is suspended.  */
  unsigned char suspended;
  unsigned char suspended;
 
 
  /* Sorted vector of known threads.  */
  /* Sorted vector of known threads.  */
  VEC(darwin_thread_t) *threads;
  VEC(darwin_thread_t) *threads;
};
};
typedef struct private_inferior darwin_inferior;
typedef struct private_inferior darwin_inferior;
 
 
/* Exception port.  */
/* Exception port.  */
extern mach_port_t darwin_ex_port;
extern mach_port_t darwin_ex_port;
 
 
/* Port set.  */
/* Port set.  */
extern mach_port_t darwin_port_set;
extern mach_port_t darwin_port_set;
 
 
/* A copy of mach_host_self ().  */
/* A copy of mach_host_self ().  */
extern mach_port_t darwin_host_self;
extern mach_port_t darwin_host_self;
 
 
/* ASSERT_FUNCTION is defined in gdb_assert.h (or not).  */
/* ASSERT_FUNCTION is defined in gdb_assert.h (or not).  */
#ifdef ASSERT_FUNCTION
#ifdef ASSERT_FUNCTION
#define MACH_CHECK_ERROR(ret) \
#define MACH_CHECK_ERROR(ret) \
  mach_check_error (ret, __FILE__, __LINE__, ASSERT_FUNCTION)
  mach_check_error (ret, __FILE__, __LINE__, ASSERT_FUNCTION)
#else
#else
#define MACH_CHECK_ERROR(ret) \
#define MACH_CHECK_ERROR(ret) \
  mach_check_error (ret, __FILE__, __LINE__, "??")
  mach_check_error (ret, __FILE__, __LINE__, "??")
#endif
#endif
 
 
extern void mach_check_error (kern_return_t ret, const char *file,
extern void mach_check_error (kern_return_t ret, const char *file,
                              unsigned int line, const char *func);
                              unsigned int line, const char *func);
 
 
void darwin_set_sstep (thread_t thread, int enable);
void darwin_set_sstep (thread_t thread, int enable);
 
 
/* This one is called in darwin-nat.c, but needs to be provided by the
/* This one is called in darwin-nat.c, but needs to be provided by the
   platform specific nat code.  It allows each platform to add platform specific
   platform specific nat code.  It allows each platform to add platform specific
   stuff to the darwin_ops.  */
   stuff to the darwin_ops.  */
extern void darwin_complete_target (struct target_ops *target);
extern void darwin_complete_target (struct target_ops *target);
 
 
void darwin_check_osabi (darwin_inferior *inf, thread_t thread);
void darwin_check_osabi (darwin_inferior *inf, thread_t thread);
 
 
#endif /* __DARWIN_NAT_H__ */
#endif /* __DARWIN_NAT_H__ */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.