From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27184 invoked by alias); 11 Sep 2005 22:02:42 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 27023 invoked by uid 22791); 11 Sep 2005 22:02:02 -0000 Received: from mtagate4.de.ibm.com (HELO mtagate4.de.ibm.com) (195.212.29.153) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Sun, 11 Sep 2005 22:02:02 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate4.de.ibm.com (8.12.10/8.12.10) with ESMTP id j8BM20O0154424 for ; Sun, 11 Sep 2005 22:02:00 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.12.10/NCO/VERS6.7) with ESMTP id j8BM20Wk160228 for ; Mon, 12 Sep 2005 00:02:00 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11/8.13.3) with ESMTP id j8BM1xlG000791 for ; Mon, 12 Sep 2005 00:02:00 +0200 Received: from 53v30g15.boeblingen.de.ibm.com (53v30g15.boeblingen.de.ibm.com [9.152.26.155]) by d12av02.megacenter.de.ibm.com (8.12.11/8.12.11) with ESMTP id j8BM1x2H000788; Mon, 12 Sep 2005 00:01:59 +0200 Received: from 53v30g15.boeblingen.de.ibm.com (localhost [127.0.0.1]) by 53v30g15.boeblingen.de.ibm.com (8.12.10/8.12.10) with ESMTP id j8BM1cw0016767; Mon, 12 Sep 2005 00:01:38 +0200 Received: (from uweigand@localhost) by 53v30g15.boeblingen.de.ibm.com (8.12.10/8.12.10/Submit) id j8BM1aZs016764; Mon, 12 Sep 2005 00:01:36 +0200 From: Ulrich Weigand Message-Id: <200509112201.j8BM1aZs016764@53v30g15.boeblingen.de.ibm.com> Subject: [committed] s390 watchpoints (Re: [RFC/RFA] Target vectors for native Linux targets) To: drow@false.org (Daniel Jacobowitz) Date: Sun, 11 Sep 2005 22:02:00 -0000 Cc: uweigand@de.ibm.com (Ulrich Weigand), mark.kettenis@xs4all.nl (Mark Kettenis), manjo@austin.ibm.com, gdb-patches@sources.redhat.com, jjohnstn@redhat.com (Jeff Johnston), davidm@hpl.hp.com (David Mosberger) In-Reply-To: <20050910181140.GA4484@nevyn.them.org> from "Daniel Jacobowitz" at Sep 10, 2005 02:11:40 PM MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2005-09/txt/msg00075.txt.bz2 Daniel Jacobowitz wrote: > Here's what I'm checking in, in the interests of progress. I'll be > glad to help with any problems it causes, including the ia64 corefile > issue. Thanks, Dan! This implements the s390 watchpoint bits. I've also removed KERNEL_U_SIZE -which is no longer used anywhere- and PTRACE_ARG3_TYPE and PTRACE_XFER_TYPE -which are picked up by autoconf tests- from config/s390/nm-linux.h, making that file empty except for the FETCH_INFERIOR_REGISTERS define. Tested on s390-ibm-linux and s390x-ibm-linux, applied to mainline. Bye, Ulrich ChangeLog: * config/s390/nm-linux.h (KERNEL_U_SIZE): Remove. (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Likewise. (s390_stopped_by_watchpoint, s390_insert_watchpoint, s390_remove_watchpoint, TARGET_CAN_USE_HARDWARE_WATCHPOINT, TARGET_REGION_OK_FOR_HW_WATCHPOINT, HAVE_CONTINUABLE_WATCHPOINT, STOPPED_BY_WATCHPOINT, target_insert_watchpoint, target_remove_watchpoint): Likewise. * s390-nat.c: Remove include of . (kernel_u_size): Remove. (s390_stopped_by_watchpoint): Make static. (s390_insert_watchpoint, s390_remove_watchpoint): Likewise. (s390_can_use_hw_breakpoint): New function. (s390_region_size_ok_for_hw_watchpoint): Likewise. (_initialize_s390_nat): Add watchpoint methods to target. diff -ur gdb-head/gdb.orig/config/s390/nm-linux.h gdb-head/gdb/config/s390/nm-linux.h --- gdb-head/gdb.orig/config/s390/nm-linux.h 2004-09-13 16:06:04.000000000 +0200 +++ gdb-head/gdb/config/s390/nm-linux.h 2005-09-06 16:38:51.000000000 +0200 @@ -30,33 +30,7 @@ /* ptrace access. */ -#define PTRACE_ARG3_TYPE long -#define PTRACE_XFER_TYPE long - #define FETCH_INFERIOR_REGISTERS -#define KERNEL_U_SIZE kernel_u_size() -extern int kernel_u_size (void); - - -/* Hardware watchpoints. */ - -extern int s390_stopped_by_watchpoint (void); -extern int s390_insert_watchpoint (CORE_ADDR addr, int len); -extern int s390_remove_watchpoint (CORE_ADDR addr, int len); - -#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(type, cnt, ot) 1 -#define TARGET_REGION_OK_FOR_HW_WATCHPOINT(addr, len) 1 -#define HAVE_CONTINUABLE_WATCHPOINT 1 - -#define STOPPED_BY_WATCHPOINT(w) \ - s390_stopped_by_watchpoint () - -#define target_insert_watchpoint(addr, len, type) \ - s390_insert_watchpoint (addr, len) - -#define target_remove_watchpoint(addr, len, type) \ - s390_remove_watchpoint (addr, len) - #endif /* nm_linux.h */ diff -ur gdb-head/gdb.orig/s390-nat.c gdb-head/gdb/s390-nat.c --- gdb-head/gdb.orig/s390-nat.c 2005-09-05 19:05:27.000000000 +0200 +++ gdb-head/gdb/s390-nat.c 2005-09-06 16:39:45.000000000 +0200 @@ -34,7 +34,6 @@ #include #include #include -#include #include @@ -250,7 +249,7 @@ static struct watch_area *watch_base = NULL; -int +static int s390_stopped_by_watchpoint (void) { per_lowcore_bits per_lowcore; @@ -310,7 +309,7 @@ perror_with_name (_("Couldn't modify watchpoint status")); } -int +static int s390_insert_watchpoint (CORE_ADDR addr, int len) { struct watch_area *area = xmalloc (sizeof (struct watch_area)); @@ -327,7 +326,7 @@ return 0; } -int +static int s390_remove_watchpoint (CORE_ADDR addr, int len) { struct watch_area *area, **parea; @@ -352,13 +351,19 @@ return 0; } +static int +s390_can_use_hw_breakpoint (int type, int cnt, int othertype) +{ + return 1; +} -int -kernel_u_size (void) +static int +s390_region_size_ok_for_hw_watchpoint (int cnt) { - return sizeof (struct user); + return 1; } + void _initialize_s390_nat (void); void @@ -373,6 +378,14 @@ t->to_fetch_registers = s390_linux_fetch_inferior_registers; t->to_store_registers = s390_linux_store_inferior_registers; + /* Add our watchpoint methods. */ + t->to_can_use_hw_breakpoint = s390_can_use_hw_breakpoint; + t->to_region_size_ok_for_hw_watchpoint = s390_region_size_ok_for_hw_watchpoint; + t->to_have_continuable_watchpoint = 1; + t->to_stopped_by_watchpoint = s390_stopped_by_watchpoint; + t->to_insert_watchpoint = s390_insert_watchpoint; + t->to_remove_watchpoint = s390_remove_watchpoint; + /* Register the target. */ add_target (t); } -- Dr. Ulrich Weigand Linux on zSeries Development Ulrich.Weigand@de.ibm.com