/* Native debugging support for GNU/Linux (LWP layer).
- Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+#include "target.h"
/* Structure describing an LWP. */
/* Non-zero if we were stepping this LWP. */
int step;
+ /* If WAITSTATUS->KIND != TARGET_WAITKIND_SPURIOUS, the waitstatus
+ for this LWP's last event. This may correspond to STATUS above,
+ or to a local variable in lin_lwp_wait. */
+ struct target_waitstatus waitstatus;
+
/* Next LWP in list. */
struct lwp_info *next;
};
-/* Read/write to target memory via the Linux kernel's "proc file
- system". */
-struct mem_attrib;
-struct target_ops;
+/* Attempt to initialize libthread_db. */
+void check_for_thread_db (void);
+
+/* Tell the thread_db layer what native target operations to use. */
+void thread_db_init (struct target_ops *);
-extern int linux_proc_xfer_memory (CORE_ADDR addr, char *myaddr, int len,
- int write, struct mem_attrib *attrib,
- struct target_ops *target);
+/* Find process PID's pending signal set from /proc/pid/status. */
+void linux_proc_pending_signals (int pid, sigset_t *pending, sigset_t *blocked, sigset_t *ignored);
/* linux-nat functions for handling fork events. */
-extern void linux_record_stopped_pid (int pid);
extern void linux_enable_event_reporting (ptid_t ptid);
-extern ptid_t linux_handle_extended_wait (int pid, int status,
- struct target_waitstatus *ourstatus);
-extern void linux_child_post_startup_inferior (ptid_t ptid);
+
+extern int lin_lwp_attach_lwp (ptid_t ptid, int verbose);
/* Iterator function for lin-lwp's lwp list. */
struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *,
void *),
void *data);
+
+/* Create a prototype generic GNU/Linux target. The client can
+ override it with local methods. */
+struct target_ops * linux_target (void);
+
+/* Register the customized GNU/Linux target. This should be used
+ instead of calling add_target directly. */
+void linux_nat_add_target (struct target_ops *);
+
+/* Update linux-nat internal state when changing from one fork
+ to another. */
+void linux_nat_switch_fork (ptid_t new_ptid);