From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16403 invoked by alias); 10 May 2005 11:45:58 -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 16264 invoked from network); 10 May 2005 11:45:47 -0000 Received: from unknown (HELO mtagate3.de.ibm.com) (195.212.29.152) by sourceware.org with SMTP; 10 May 2005 11:45:47 -0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate3.de.ibm.com (8.12.10/8.12.10) with ESMTP id j4ABjkJl119028 for ; Tue, 10 May 2005 11:45:46 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/VER6.6) with ESMTP id j4ABjknC290988 for ; Tue, 10 May 2005 13:45:46 +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 j4ABjkMG012914 for ; Tue, 10 May 2005 13:45:46 +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 j4ABjkJ8012910 for ; Tue, 10 May 2005 13:45:46 +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 j4ABjSql023764 for ; Tue, 10 May 2005 13:45:28 +0200 Received: (from uweigand@localhost) by 53v30g15.boeblingen.de.ibm.com (8.12.10/8.12.10/Submit) id j4ABjSh2023763 for gdb-patches@sources.redhat.com; Tue, 10 May 2005 13:45:28 +0200 From: Ulrich Weigand Message-Id: <200505101145.j4ABjSh2023763@53v30g15.boeblingen.de.ibm.com> Subject: [RFA] Fix gdbserver on s390(x) To: gdb-patches@sources.redhat.com Date: Tue, 10 May 2005 12:13:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2005-05/txt/msg00222.txt.bz2 Hello, this patch adds the missing members to the the_low_target struct in linux-s390-low.c, getting gdbserver working again on s390(x). Tested on s390-ibm-linux and s390x-ibm-linux. OK? Bye, Ulrich ChangeLog: * linux-s390-low.c (s390_breakpoint, s390_breakpoint_len): Define. (s390_get_pc, s390_set_pc, s390_breakpoint_at): New functions. (the_low_target): Add new members. Index: gdb/gdbserver/linux-s390-low.c =================================================================== RCS file: /cvs/src/src/gdb/gdbserver/linux-s390-low.c,v retrieving revision 1.4 diff -c -p -r1.4 linux-s390-low.c *** gdb/gdbserver/linux-s390-low.c 18 Feb 2004 03:42:51 -0000 1.4 --- gdb/gdbserver/linux-s390-low.c 6 May 2005 18:44:32 -0000 *************** s390_cannot_store_register (int regno) *** 75,83 **** --- 75,125 ---- return 0; } + + static const char s390_breakpoint[] = { 0, 1 }; + #define s390_breakpoint_len 2 + + static CORE_ADDR + s390_get_pc () + { + unsigned long pc; + collect_register_by_name ("pswa", &pc); + #ifndef __s390x__ + pc &= 0x7fffffff; + #endif + return pc; + } + + static void + s390_set_pc (CORE_ADDR newpc) + { + unsigned long pc = newpc; + #ifndef __s390x__ + pc |= 0x80000000; + #endif + supply_register_by_name ("pswa", &pc); + } + + static int + s390_breakpoint_at (CORE_ADDR pc) + { + unsigned char c[s390_breakpoint_len]; + read_inferior_memory (pc, c, s390_breakpoint_len); + return memcmp (c, s390_breakpoint, s390_breakpoint_len) == 0; + } + + struct linux_target_ops the_low_target = { s390_num_regs, s390_regmap, s390_cannot_fetch_register, s390_cannot_store_register, + s390_get_pc, + s390_set_pc, + s390_breakpoint, + s390_breakpoint_len, + NULL, + s390_breakpoint_len, + s390_breakpoint_at, }; + -- Dr. Ulrich Weigand Linux on zSeries Development Ulrich.Weigand@de.ibm.com