]>
Commit | Line | Data |
---|---|---|
c906108c | 1 | /* Native support for i386 running Solaris 2. |
6aba47ca | 2 | Copyright 1998, 1999, 2000, 2007 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 | |
a9762ec7 | 8 | the Free Software Foundation; either version 3 of the License, or |
c5aa993b | 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 | 16 | You should have received a copy of the GNU General Public License |
a9762ec7 | 17 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
c906108c | 18 | |
2f09097b ND |
19 | #ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */ |
20 | ||
21 | #define TARGET_HAS_HARDWARE_WATCHPOINTS | |
22 | ||
23 | /* The man page for proc4 on solaris 6 and 7 says that the system | |
24 | can support "thousands" of hardware watchpoints, but gives no | |
25 | method for finding out how many. So just tell GDB 'yes'. */ | |
26 | #define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE, CNT, OT) 1 | |
c9b9de0b | 27 | #define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1 |
2f09097b ND |
28 | |
29 | /* When a hardware watchpoint fires off the PC will be left at the | |
30 | instruction following the one which caused the watchpoint. | |
31 | It will *NOT* be necessary for GDB to step over the watchpoint. */ | |
7df1a324 | 32 | #define HAVE_CONTINUABLE_WATCHPOINT 1 |
2f09097b | 33 | |
14164c30 PS |
34 | /* Solaris x86 2.6 and 2.7 targets have a kernel bug when stepping |
35 | over an instruction that causes a page fault without triggering | |
36 | a hardware watchpoint. The kernel properly notices that it shouldn't | |
37 | stop, because the hardware watchpoint is not triggered, but it forgets | |
38 | the step request and continues the program normally. | |
39 | Work around the problem by removing hardware watchpoints if a step is | |
40 | requested, GDB will check for a hardware watchpoint trigger after the | |
41 | step anyway. */ | |
42 | #define CANNOT_STEP_HW_WATCHPOINTS | |
43 | ||
39f77062 | 44 | extern int procfs_stopped_by_watchpoint (ptid_t); |
2f09097b | 45 | #define STOPPED_BY_WATCHPOINT(W) \ |
39f77062 | 46 | procfs_stopped_by_watchpoint(inferior_ptid) |
2f09097b ND |
47 | |
48 | /* Use these macros for watchpoint insertion/deletion. */ | |
49 | /* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */ | |
50 | ||
39f77062 | 51 | extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int); |
2f09097b | 52 | #define target_insert_watchpoint(ADDR, LEN, TYPE) \ |
39f77062 | 53 | procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 1) |
2f09097b | 54 | #define target_remove_watchpoint(ADDR, LEN, TYPE) \ |
39f77062 | 55 | procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0) |
2f09097b ND |
56 | |
57 | #endif /* NEW_PROC_API */ |