X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Flinux-nat.h;h=5aba089eaf3d20a703b0f7db9ed8607a0b3d375e;hb=3c83b96e241336be0c3e26c06f2bf901d0fe8edd;hp=0985e8409f58edd31b10b6b6f64d3630f65a8668;hpb=117de6a92498c0dd715fa0fdec577697433f3c5e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h index 0985e8409f..5aba089eaf 100644 --- a/gdb/linux-nat.h +++ b/gdb/linux-nat.h @@ -1,7 +1,7 @@ /* Native debugging support for GNU/Linux (LWP layer). - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. This file is part of GDB. @@ -62,6 +62,18 @@ struct lwp_info be the address of a hardware watchpoint. */ struct siginfo siginfo; + /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data + watchpoint trap. */ + int stopped_by_watchpoint; + + /* On architectures where it is possible to know the data address of + a triggered watchpoint, STOPPED_DATA_ADDRESS_P is non-zero, and + STOPPED_DATA_ADDRESS contains such data address. Otherwise, + STOPPED_DATA_ADDRESS_P is false, and STOPPED_DATA_ADDRESS is + undefined. Only valid if STOPPED_BY_WATCHPOINT is true. */ + int stopped_data_address_p; + CORE_ADDR stopped_data_address; + /* Non-zero if we expect a duplicated SIGINT. */ int ignore_sigint; @@ -70,6 +82,16 @@ struct lwp_info or to a local variable in lin_lwp_wait. */ struct target_waitstatus waitstatus; + /* Signal wether we are in a SYSCALL_ENTRY or + in a SYSCALL_RETURN event. + Values: + - TARGET_WAITKIND_SYSCALL_ENTRY + - TARGET_WAITKIND_SYSCALL_RETURN */ + int syscall_state; + + /* The processor core this LWP was last seen on. */ + int core; + /* Next LWP in list. */ struct lwp_info *next; }; @@ -99,13 +121,18 @@ int thread_db_attach_lwp (ptid_t ptid); /* 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); +/* Return the TGID of LWPID from /proc/pid/status. Returns -1 if not + found. */ +extern int linux_proc_get_tgid (int lwpid); + /* linux-nat functions for handling fork events. */ extern void linux_enable_event_reporting (ptid_t ptid); extern int lin_lwp_attach_lwp (ptid_t ptid); /* Iterator function for lin-lwp's lwp list. */ -struct lwp_info *iterate_over_lwps (int (*callback) (struct lwp_info *, +struct lwp_info *iterate_over_lwps (ptid_t filter, + int (*callback) (struct lwp_info *, void *), void *data); @@ -125,9 +152,20 @@ void linux_nat_add_target (struct target_ops *); /* Register a method to call whenever a new thread is attached. */ void linux_nat_set_new_thread (struct target_ops *, void (*) (ptid_t)); +/* Register a method that converts a siginfo object between the layout + that ptrace returns, and the layout in the architecture of the + inferior. */ +void linux_nat_set_siginfo_fixup (struct target_ops *, + int (*) (struct siginfo *, + gdb_byte *, + int)); + /* Update linux-nat internal state when changing from one fork to another. */ void linux_nat_switch_fork (ptid_t new_ptid); /* Return the saved siginfo associated with PTID. */ struct siginfo *linux_nat_get_siginfo (ptid_t ptid); + +/* Compute and return the processor core of a given thread. */ +int linux_nat_core_of_thread_1 (ptid_t ptid);