From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32112 invoked by alias); 18 May 2005 15:43:13 -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 31374 invoked from network); 18 May 2005 15:42:51 -0000 Received: from unknown (HELO e34.co.us.ibm.com) (32.97.110.132) by sourceware.org with SMTP; 18 May 2005 15:42:51 -0000 Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by e34.co.us.ibm.com (8.12.10/8.12.9) with ESMTP id j4IFgpcu529492 for ; Wed, 18 May 2005 11:42:51 -0400 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay04.boulder.ibm.com (8.12.10/NCO/VER6.6) with ESMTP id j4IFgorR181848 for ; Wed, 18 May 2005 09:42:50 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.12.11/8.13.3) with ESMTP id j4IFgo5X029333 for ; Wed, 18 May 2005 09:42:50 -0600 Received: from austin.ibm.com (netmail2.austin.ibm.com [9.41.248.176]) by d03av02.boulder.ibm.com (8.12.11/8.12.11) with ESMTP id j4IFgoXH029318 for ; Wed, 18 May 2005 09:42:50 -0600 Received: from lazy.austin.ibm.com (lazy.austin.ibm.com [9.53.94.97]) by austin.ibm.com (8.12.10/8.12.10) with ESMTP id j4IFgndr051416 for ; Wed, 18 May 2005 10:42:49 -0500 Date: Wed, 18 May 2005 16:29:00 -0000 From: Manoj Iyer X-X-Sender: manjo@lazy To: gdb-patches@sources.redhat.com Subject: Re: [RFC] gdb.server testcases (resend) In-Reply-To: <20050518130218.GA11918@nevyn.them.org> Message-ID: References: <20050518012521.GB8672@nevyn.them.org> <20050518130218.GA11918@nevyn.them.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2005-05/txt/msg00452.txt.bz2 Daniel, The patches did not apply cleanly to mainline, so I had to hand patch the files. Also, in the final link stage for gdbserver ld complained that: /usr/bin/ld: warning: powerpc:common64 architecture of input file `inferiors.o' is incompatible with powerpc:common output so I had to add a -m64 to the linker call. gdbserver still broken:. $ ./gdbserver uranus.ltc.austin.ibm.com /tmp/server Process /tmp/server created; pid = 4747 reading register 70: Input/output error Exiting Thanks ----- manjo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Cogito ergo sum + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ On Wed, 18 May 2005, Daniel Jacobowitz wrote: > On Tue, May 17, 2005 at 11:39:27PM -0500, Manoj Iyer wrote: > > > > > > Daniel, > > > > I misunderstood the use of gdb.server directory. I thought that this > > directory is for testing gdbserver remote debugging functionality. I am > > trying to get gdbserver working on ppc. As a starting point I used these > > tests. But you are correct. In this perspective my testcases seem useless. > > Take a look 'round the list archives for the DejaGNU board file you'll > need to run the entire testsuite using gdbserver. There are about a > hundred failures I haven't really looked into yet, but enough tests > pass to be useful. > > > To begin with gdbserver program fails outright on ppc64 PPC970 Altivec > > hardware: > > > > ./gdbserver uranus.ltc.austin.ibm.com:1234 /tmp/server > > Process /tmp/server created; pid = 30836 > > reading register 1: Input/output error > > Exiting > > > > I am trying to chase down the problem and get gdbserver working. If you > > have any insight into this problem please advice. > > Gdbserver does not have any configuration for ppc64. I have a ppc64 > port around here somewhere; I'll attach it to this message. Can you > test it for me? I never submitted it because I had no way to test it. > > Just like the PPC port, it doesn't support NPTL; we can do that > separately. > > -- > Daniel Jacobowitz > CodeSourcery, LLC > > Index: src/gdb/configure.tgt > =================================================================== > RCS file: /cvs/src/src/gdb/configure.tgt,v > retrieving revision 1.161 > diff -u -p -r1.161 configure.tgt > --- src/gdb/configure.tgt 18 Mar 2005 18:59:17 -0000 1.161 > +++ src/gdb/configure.tgt 29 Mar 2005 16:33:20 -0000 > @@ -146,7 +146,9 @@ powerpc-*-aix*) gdb_target=aix ;; > powerpc-*-linux*) gdb_target=linux > build_gdbserver=yes > ;; > -powerpc64-*-linux*) gdb_target=linux ;; > +powerpc64-*-linux*) gdb_target=linux > + build_gdbserver=yes > + ;; > powerpc*-*-*) if test -f ../sim/ppc/Makefile; then > gdb_target=ppc-sim > else > Index: src/gdb/gdbserver/Makefile.in > =================================================================== > RCS file: /cvs/src/src/gdb/gdbserver/Makefile.in,v > retrieving revision 1.28 > diff -u -p -r1.28 Makefile.in > --- src/gdb/gdbserver/Makefile.in 4 Mar 2005 18:16:25 -0000 1.28 > +++ src/gdb/gdbserver/Makefile.in 29 Mar 2005 16:33:21 -0000 > @@ -122,7 +122,8 @@ SFILES= $(srcdir)/gdbreplay.c $(srcdir)/ > $(srcdir)/i387-fp.c \ > $(srcdir)/linux-ia64-low.c $(srcdir)/linux-low.c \ > $(srcdir)/linux-m68k-low.c $(srcdir)/linux-mips-low.c \ > - $(srcdir)/linux-ppc-low.c $(srcdir)/linux-s390-low.c \ > + $(srcdir)/linux-ppc-low.c $(srcdir)/linux-ppc64-low.c \ > + $(srcdir)/linux-s390-low.c \ > $(srcdir)/linux-sh-low.c $(srcdir)/linux-x86-64-low.c > > DEPFILES = @GDBSERVER_DEPFILES@ > @@ -265,6 +266,7 @@ linux-i386-low.o: linux-i386-low.c $(lin > linux-ia64-low.o: linux-ia64-low.c $(linux_low_h) $(server_h) > linux-mips-low.o: linux-mips-low.c $(linux_low_h) $(server_h) > linux-ppc-low.o: linux-ppc-low.c $(linux_low_h) $(server_h) > +linux-ppc64-low.o: linux-ppc64-low.c $(linux_low_h) $(server_h) > linux-s390-low.o: linux-s390-low.c $(linux_low_h) $(server_h) > linux-sh-low.o: linux-sh-low.c $(linux_low_h) $(server_h) > linux-x86-64-low.o: linux-x86-64-low.c $(linux_low_h) $(server_h) > @@ -290,6 +292,9 @@ reg-mips.c : $(srcdir)/../regformats/reg > reg-ppc.o : reg-ppc.c $(regdef_h) > reg-ppc.c : $(srcdir)/../regformats/reg-ppc.dat $(regdat_sh) > sh $(regdat_sh) $(srcdir)/../regformats/reg-ppc.dat reg-ppc.c > +reg-ppc64.o : reg-ppc64.c $(regdef_h) > +reg-ppc64.c : $(srcdir)/../regformats/reg-ppc64.dat $(regdat_sh) > + sh $(regdat_sh) $(srcdir)/../regformats/reg-ppc64.dat reg-ppc64.c > reg-s390.o : reg-s390.c $(regdef_h) > reg-s390.c : $(srcdir)/../regformats/reg-s390.dat $(regdat_sh) > sh $(regdat_sh) $(srcdir)/../regformats/reg-s390.dat reg-s390.c > Index: src/gdb/gdbserver/configure.srv > =================================================================== > RCS file: /cvs/src/src/gdb/gdbserver/configure.srv,v > retrieving revision 1.8 > diff -u -p -r1.8 configure.srv > --- src/gdb/gdbserver/configure.srv 21 Nov 2004 03:09:39 -0000 1.8 > +++ src/gdb/gdbserver/configure.srv 29 Mar 2005 16:33:21 -0000 > @@ -44,7 +44,12 @@ case "${target}" in > srv_linux_usrregs=yes > srv_linux_thread_db=yes > ;; > - powerpc*-*-linux*) srv_regobj=reg-ppc.o > + powerpc64-*-linux*) srv_regobj=reg-ppc64.o > + srv_tgtobj="linux-low.o linux-ppc64-low.o" > + srv_linux_usrregs=yes > + srv_linux_thread_db=yes > + ;; > + powerpc-*-linux*) srv_regobj=reg-ppc.o > srv_tgtobj="linux-low.o linux-ppc-low.o" > srv_linux_usrregs=yes > srv_linux_thread_db=yes > Index: src/gdb/gdbserver/linux-ppc64-low.c > =================================================================== > RCS file: src/gdb/gdbserver/linux-ppc64-low.c > diff -N src/gdb/gdbserver/linux-ppc64-low.c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ src/gdb/gdbserver/linux-ppc64-low.c 29 Mar 2005 16:33:22 -0000 > @@ -0,0 +1,112 @@ > +/* GNU/Linux/PowerPC64 specific low level interface, for the remote server for > + GDB. > + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2005 > + Free Software Foundation, Inc. > + > + This file is part of GDB. > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 2 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program; if not, write to the Free Software > + Foundation, Inc., 59 Temple Place - Suite 330, > + Boston, MA 02111-1307, USA. */ > + > +#include "server.h" > +#include "linux-low.h" > + > +#include > + > +#define ppc_num_regs 71 > + > +/* Currently, don't check/send MQ. */ > +static int ppc_regmap[] = > + {PT_R0 * 8, PT_R1 * 8, PT_R2 * 8, PT_R3 * 8, > + PT_R4 * 8, PT_R5 * 8, PT_R6 * 8, PT_R7 * 8, > + PT_R8 * 8, PT_R9 * 8, PT_R10 * 8, PT_R11 * 8, > + PT_R12 * 8, PT_R13 * 8, PT_R14 * 8, PT_R15 * 8, > + PT_R16 * 8, PT_R17 * 8, PT_R18 * 8, PT_R19 * 8, > + PT_R20 * 8, PT_R21 * 8, PT_R22 * 8, PT_R23 * 8, > + PT_R24 * 8, PT_R25 * 8, PT_R26 * 8, PT_R27 * 8, > + PT_R28 * 8, PT_R29 * 8, PT_R30 * 8, PT_R31 * 8, > + PT_FPR0*8, PT_FPR0*8 + 8, PT_FPR0*8+16, PT_FPR0*8+24, > + PT_FPR0*8+32, PT_FPR0*8+40, PT_FPR0*8+48, PT_FPR0*8+56, > + PT_FPR0*8+64, PT_FPR0*8+72, PT_FPR0*8+80, PT_FPR0*8+88, > + PT_FPR0*8+96, PT_FPR0*8+104, PT_FPR0*8+112, PT_FPR0*8+120, > + PT_FPR0*8+128, PT_FPR0*8+136, PT_FPR0*8+144, PT_FPR0*8+152, > + PT_FPR0*8+160, PT_FPR0*8+168, PT_FPR0*8+176, PT_FPR0*8+184, > + PT_FPR0*8+192, PT_FPR0*8+200, PT_FPR0*8+208, PT_FPR0*8+216, > + PT_FPR0*8+224, PT_FPR0*8+232, PT_FPR0*8+240, PT_FPR0*8+248, > + PT_NIP * 8, PT_MSR * 8, PT_CCR * 8, PT_LNK * 8, > + PT_CTR * 8, PT_XER * 8, PT_FPSCR * 8, }; > + > +static int > +ppc_cannot_store_register (int regno) > +{ > + return 0; > +} > + > +static int > +ppc_cannot_fetch_register (int regno) > +{ > + return 0; > +} > + > +static CORE_ADDR > +ppc_get_pc (void) > +{ > + unsigned long pc; > + > + collect_register_by_name ("pc", &pc); > +printf ("Stop pc is 0x%lx\n", pc); > + return (CORE_ADDR) pc; > +} > + > +static void > +ppc_set_pc (CORE_ADDR pc) > +{ > + unsigned long newpc = pc; > + > + supply_register_by_name ("pc", &newpc); > +} > + > +/* Correct in either endianness. > + This instruction is "twge r2, r2", which GDB uses as a software > + breakpoint. */ > +static const unsigned int ppc_breakpoint = 0x7d821008; > +#define ppc_breakpoint_len 4 > + > +static int > +ppc_breakpoint_at (CORE_ADDR where) > +{ > + unsigned int insn; > + > + (*the_target->read_memory) (where, (char *) &insn, 4); > + if (insn == ppc_breakpoint) > + return 1; > + /* If necessary, recognize more trap instructions here. GDB only uses the > + one. */ > + return 0; > +} > + > +struct linux_target_ops the_low_target = { > + ppc_num_regs, > + ppc_regmap, > + ppc_cannot_fetch_register, > + ppc_cannot_store_register, > + ppc_get_pc, > + ppc_set_pc, > + (const char *) &ppc_breakpoint, > + ppc_breakpoint_len, > + NULL, > + 0, > + ppc_breakpoint_at, > +}; > Index: src/gdb/regformats/reg-ppc64.dat > =================================================================== > RCS file: src/gdb/regformats/reg-ppc64.dat > diff -N src/gdb/regformats/reg-ppc64.dat > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ src/gdb/regformats/reg-ppc64.dat 29 Mar 2005 16:33:22 -0000 > @@ -0,0 +1,76 @@ > +name:ppc > +expedite:r1,pc > +64:r0 > +64:r1 > +64:r2 > +64:r3 > +64:r4 > +64:r5 > +64:r6 > +64:r7 > +64:r8 > +64:r9 > +64:r10 > +64:r11 > +64:r12 > +64:r13 > +64:r14 > +64:r15 > +64:r16 > +64:r17 > +64:r18 > +64:r19 > +64:r20 > +64:r21 > +64:r22 > +64:r23 > +64:r24 > +64:r25 > +64:r26 > +64:r27 > +64:r28 > +64:r29 > +64:r30 > +64:r31 > + > +64:f0 > +64:f1 > +64:f2 > +64:f3 > +64:f4 > +64:f5 > +64:f6 > +64:f7 > +64:f8 > +64:f9 > +64:f10 > +64:f11 > +64:f12 > +64:f13 > +64:f14 > +64:f15 > +64:f16 > +64:f17 > +64:f18 > +64:f19 > +64:f20 > +64:f21 > +64:f22 > +64:f23 > +64:f24 > +64:f25 > +64:f26 > +64:f27 > +64:f28 > +64:f29 > +64:f30 > +64:f31 > + > +64:pc > +64:ps > + > +32:cr > +64:lr > +64:ctr > +32:xer > +32:fpscr >