Commit | Line | Data |
---|---|---|
c906108c | 1 | /* Native support for i386 running Solaris 2. |
b6ba6518 | 2 | Copyright 1998, 1999, 2000 Free Software Foundation, Inc. |
c906108c | 3 | |
c5aa993b | 4 | This file is part of GDB. |
c906108c | 5 | |
c5aa993b JM |
6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 2 of the License, or | |
9 | (at your option) any later version. | |
c906108c | 10 | |
c5aa993b JM |
11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
c906108c | 15 | |
c5aa993b JM |
16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software | |
18 | Foundation, Inc., 59 Temple Place - Suite 330, | |
19 | Boston, MA 02111-1307, USA. */ | |
c906108c | 20 | |
4f2e4a4f | 21 | #include "config/nm-sysv4.h" |
c906108c | 22 | |
2f09097b ND |
23 | #ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */ |
24 | ||
25 | #define TARGET_HAS_HARDWARE_WATCHPOINTS | |
26 | ||
27 | /* The man page for proc4 on solaris 6 and 7 says that the system | |
28 | can support "thousands" of hardware watchpoints, but gives no | |
29 | method for finding out how many. So just tell GDB 'yes'. */ | |
30 | #define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE, CNT, OT) 1 | |
c9b9de0b | 31 | #define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1 |
2f09097b ND |
32 | |
33 | /* When a hardware watchpoint fires off the PC will be left at the | |
34 | instruction following the one which caused the watchpoint. | |
35 | It will *NOT* be necessary for GDB to step over the watchpoint. */ | |
7df1a324 | 36 | #define HAVE_CONTINUABLE_WATCHPOINT 1 |
2f09097b | 37 | |
14164c30 PS |
38 | /* Solaris x86 2.6 and 2.7 targets have a kernel bug when stepping |
39 | over an instruction that causes a page fault without triggering | |
40 | a hardware watchpoint. The kernel properly notices that it shouldn't | |
41 | stop, because the hardware watchpoint is not triggered, but it forgets | |
42 | the step request and continues the program normally. | |
43 | Work around the problem by removing hardware watchpoints if a step is | |
44 | requested, GDB will check for a hardware watchpoint trigger after the | |
45 | step anyway. */ | |
46 | #define CANNOT_STEP_HW_WATCHPOINTS | |
47 | ||
39f77062 | 48 | extern int procfs_stopped_by_watchpoint (ptid_t); |
2f09097b | 49 | #define STOPPED_BY_WATCHPOINT(W) \ |
39f77062 | 50 | procfs_stopped_by_watchpoint(inferior_ptid) |
2f09097b ND |
51 | |
52 | /* Use these macros for watchpoint insertion/deletion. */ | |
53 | /* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */ | |
54 | ||
39f77062 | 55 | extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int); |
2f09097b | 56 | #define target_insert_watchpoint(ADDR, LEN, TYPE) \ |
39f77062 | 57 | procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 1) |
2f09097b | 58 | #define target_remove_watchpoint(ADDR, LEN, TYPE) \ |
39f77062 | 59 | procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0) |
2f09097b ND |
60 | |
61 | #endif /* NEW_PROC_API */ |