Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFC] gdb.server testcases (resend)
@ 2005-05-17  2:38 Manoj Iyer
  2005-05-17 19:02 ` Manoj Iyer
  2005-05-18  1:45 ` Daniel Jacobowitz
  0 siblings, 2 replies; 16+ messages in thread
From: Manoj Iyer @ 2005-05-17  2:38 UTC (permalink / raw)
  To: gdb-patches


In my previous email I missed the changelog. Here is my complete patch.
Please review and comment.

2005-05-16  Manoj Iyer  <manjo@austin.ibm.com>

        * gdb.server/server-run.exp: added testcases.
        * gdb.server/server.c: added nested function call to test
          backtrace.

=============== server-run.exp ==================
--- ./old/src/gdb/testsuite/gdb.server/server-run.exp	2005-05-16 11:42:45.000000000 -0500
+++ ./new/src/gdb/testsuite/gdb.server/server-run.exp	2005-05-16 11:44:30.000000000 -0500
@@ -38,5 +38,21 @@ gdb_start
 gdbserver_load $binfile ""
 gdb_reinitialize_dir $srcdir/$subdir

+# test setting a breakpoint
 gdb_breakpoint main
-gdb_test "continue" "Breakpoint.* main .*" "continue to main"
+
+gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\], main.*at .*$srcfile:\[0-9\]+.*"
+
+# test if list command displays source code
+gdb_test "list" ".*main.*\{.*\}"
+
+# set breakpoint at a function and test backtrace command
+gdb_test "break function3" "Breakpoint 2 at.*file .*$srcfile, line \[0-9\]+."
+
+gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\]+, function3.*at.*$srcfile:\[0-9\]+.*"
+
+gdb_test "backtrace" "\#0.*function3.*at.*server.c:\[0-9\]+.*\#1.*function2.*at.*server.c:\[0-9\]+.*\#2.*function1.*at.*server.c:\[0-9\]+.*\#3.*main.*at.*server.c:\[0-9\]+"
+
+gdb_test "step" ".*function4.*at.*server.c:\[0-9\]+.*;"
+
+gdb_test "step 2" ".*\[0-9\]+.*x = y;"
===============================================

=============== server.c ======================
--- ./old/src/gdb/testsuite/gdb.server/server.c	2005-05-16 11:42:45.000000000 -0500
+++ ./new/src/gdb/testsuite/gdb.server/server.c	2005-05-16 11:44:17.000000000 -0500
@@ -17,8 +17,40 @@
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
    USA.  */

+static void
+function4()
+{
+   int x = 1;
+   int y = 2;
+
+   x = y;
+   return;
+}
+
+
+static void
+function3()
+{
+   function4();
+}
+
+
+static void
+function2()
+{
+    function3();
+}
+
+
+static void
+function1()
+{
+    function2();
+}
+
 int
 main (int argc, char **argv)
 {
-  return 0;
+    function1();
+    return 0;
 }
=================================


Thanks
-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-17  2:38 [RFC] gdb.server testcases (resend) Manoj Iyer
@ 2005-05-17 19:02 ` Manoj Iyer
  2005-05-18  1:45 ` Daniel Jacobowitz
  1 sibling, 0 replies; 16+ messages in thread
From: Manoj Iyer @ 2005-05-17 19:02 UTC (permalink / raw)
  To: gdb-patches


Daniel,

Any comments on this one? ok to commit?

Thanks
-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

On Mon, 16 May 2005, Manoj Iyer wrote:

>
> In my previous email I missed the changelog. Here is my complete patch.
> Please review and comment.
>
> 2005-05-16  Manoj Iyer  <manjo@austin.ibm.com>
>
>         * gdb.server/server-run.exp: added testcases.
>         * gdb.server/server.c: added nested function call to test
>           backtrace.
>
> =============== server-run.exp ==================
> --- ./old/src/gdb/testsuite/gdb.server/server-run.exp	2005-05-16 11:42:45.000000000 -0500
> +++ ./new/src/gdb/testsuite/gdb.server/server-run.exp	2005-05-16 11:44:30.000000000 -0500
> @@ -38,5 +38,21 @@ gdb_start
>  gdbserver_load $binfile ""
>  gdb_reinitialize_dir $srcdir/$subdir
>
> +# test setting a breakpoint
>  gdb_breakpoint main
> -gdb_test "continue" "Breakpoint.* main .*" "continue to main"
> +
> +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\], main.*at .*$srcfile:\[0-9\]+.*"
> +
> +# test if list command displays source code
> +gdb_test "list" ".*main.*\{.*\}"
> +
> +# set breakpoint at a function and test backtrace command
> +gdb_test "break function3" "Breakpoint 2 at.*file .*$srcfile, line \[0-9\]+."
> +
> +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\]+, function3.*at.*$srcfile:\[0-9\]+.*"
> +
> +gdb_test "backtrace" "\#0.*function3.*at.*server.c:\[0-9\]+.*\#1.*function2.*at.*server.c:\[0-9\]+.*\#2.*function1.*at.*server.c:\[0-9\]+.*\#3.*main.*at.*server.c:\[0-9\]+"
> +
> +gdb_test "step" ".*function4.*at.*server.c:\[0-9\]+.*;"
> +
> +gdb_test "step 2" ".*\[0-9\]+.*x = y;"
> ===============================================
>
> =============== server.c ======================
> --- ./old/src/gdb/testsuite/gdb.server/server.c	2005-05-16 11:42:45.000000000 -0500
> +++ ./new/src/gdb/testsuite/gdb.server/server.c	2005-05-16 11:44:17.000000000 -0500
> @@ -17,8 +17,40 @@
>     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
>     USA.  */
>
> +static void
> +function4()
> +{
> +   int x = 1;
> +   int y = 2;
> +
> +   x = y;
> +   return;
> +}
> +
> +
> +static void
> +function3()
> +{
> +   function4();
> +}
> +
> +
> +static void
> +function2()
> +{
> +    function3();
> +}
> +
> +
> +static void
> +function1()
> +{
> +    function2();
> +}
> +
>  int
>  main (int argc, char **argv)
>  {
> -  return 0;
> +    function1();
> +    return 0;
>  }
> =================================
>
>
> Thanks
> -----
> manjo
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> + Cogito ergo sum                                                          +
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-17  2:38 [RFC] gdb.server testcases (resend) Manoj Iyer
  2005-05-17 19:02 ` Manoj Iyer
@ 2005-05-18  1:45 ` Daniel Jacobowitz
  2005-05-18  9:52   ` Manoj Iyer
  1 sibling, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-18  1:45 UTC (permalink / raw)
  To: Manoj Iyer; +Cc: gdb-patches

On Mon, May 16, 2005 at 12:13:17PM -0500, Manoj Iyer wrote:
> 
> In my previous email I missed the changelog. Here is my complete patch.
> Please review and comment.
> 
> 2005-05-16  Manoj Iyer  <manjo@austin.ibm.com>
> 
>         * gdb.server/server-run.exp: added testcases.
>         * gdb.server/server.c: added nested function call to test
>           backtrace.

That's not a changelog; it does not describe what has changed.  Please
follow the conventions for C code when changing C files in the
testsuite; each function needs its own entry, for instance.

You've changed the indentation in server.c, away from the GNU style.
It's not as important to maintain GNU Coding Standards in the
testsuite, but please don't ignore it without a reason.

> +# test setting a breakpoint

Comments are full sentences, start with capital letters, and end with
periods.

>  gdb_breakpoint main
> -gdb_test "continue" "Breakpoint.* main .*" "continue to main"
> +
> +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\], main.*at .*$srcfile:\[0-9\]+.*"
> +
> +# test if list command displays source code
> +gdb_test "list" ".*main.*\{.*\}"
> +
> +# set breakpoint at a function and test backtrace command
> +gdb_test "break function3" "Breakpoint 2 at.*file .*$srcfile, line \[0-9\]+."
> +
> +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\]+, function3.*at.*$srcfile:\[0-9\]+.*"

You'll need to give names to tests; otherwise this test is going to
report "PASS: gdb.server/server-run.exp: continue" multiple times.

Manoj, before you revise the patch again, could you explain why you
want to add these tests?  It is possible to run the entire testsuite
using gdbserver if you want to specifically validate gdbserver; the
purpose of the gdb.server directory is:

1. To make sure that minimal remote protocol support is not
accidentally broken by people working on native debuggers.

2. (Someday) to test gdbserver-specific features, like gdbserver
--attach.

Do these tests add value to #1?  We're already testing that we can
reach main; on a native configuration that tests breakpoints,
continuing, and single-stepping (for the dynamic linker breakpoints).

-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-18  1:45 ` Daniel Jacobowitz
@ 2005-05-18  9:52   ` Manoj Iyer
  2005-05-18 16:01     ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Manoj Iyer @ 2005-05-18  9:52 UTC (permalink / raw)
  To: gdb-patches



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.

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.

Thanks
-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

On Tue, 17 May 2005, Daniel Jacobowitz wrote:

> On Mon, May 16, 2005 at 12:13:17PM -0500, Manoj Iyer wrote:
> >
> > In my previous email I missed the changelog. Here is my complete patch.
> > Please review and comment.
> >
> > 2005-05-16  Manoj Iyer  <manjo@austin.ibm.com>
> >
> >         * gdb.server/server-run.exp: added testcases.
> >         * gdb.server/server.c: added nested function call to test
> >           backtrace.
>
> That's not a changelog; it does not describe what has changed.  Please
> follow the conventions for C code when changing C files in the
> testsuite; each function needs its own entry, for instance.
>
> You've changed the indentation in server.c, away from the GNU style.
> It's not as important to maintain GNU Coding Standards in the
> testsuite, but please don't ignore it without a reason.
>
> > +# test setting a breakpoint
>
> Comments are full sentences, start with capital letters, and end with
> periods.
>
> >  gdb_breakpoint main
> > -gdb_test "continue" "Breakpoint.* main .*" "continue to main"
> > +
> > +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\], main.*at .*$srcfile:\[0-9\]+.*"
> > +
> > +# test if list command displays source code
> > +gdb_test "list" ".*main.*\{.*\}"
> > +
> > +# set breakpoint at a function and test backtrace command
> > +gdb_test "break function3" "Breakpoint 2 at.*file .*$srcfile, line \[0-9\]+."
> > +
> > +gdb_test "continue" ".*Continuing\\..*Breakpoint \[0-9\]+, function3.*at.*$srcfile:\[0-9\]+.*"
>
> You'll need to give names to tests; otherwise this test is going to
> report "PASS: gdb.server/server-run.exp: continue" multiple times.
>
> Manoj, before you revise the patch again, could you explain why you
> want to add these tests?  It is possible to run the entire testsuite
> using gdbserver if you want to specifically validate gdbserver; the
> purpose of the gdb.server directory is:
>
> 1. To make sure that minimal remote protocol support is not
> accidentally broken by people working on native debuggers.
>
> 2. (Someday) to test gdbserver-specific features, like gdbserver
> --attach.
>
> Do these tests add value to #1?  We're already testing that we can
> reach main; on a native configuration that tests breakpoints,
> continuing, and single-stepping (for the dynamic linker breakpoints).
>
> --
> Daniel Jacobowitz
> CodeSourcery, LLC
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-18  9:52   ` Manoj Iyer
@ 2005-05-18 16:01     ` Daniel Jacobowitz
  2005-05-18 16:29       ` Manoj Iyer
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-18 16:01 UTC (permalink / raw)
  To: Manoj Iyer; +Cc: gdb-patches

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 <asm/ptrace.h>
+
+#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


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-18 16:01     ` Daniel Jacobowitz
@ 2005-05-18 16:29       ` Manoj Iyer
  2005-05-18 18:08         ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Manoj Iyer @ 2005-05-18 16:29 UTC (permalink / raw)
  To: gdb-patches


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 <asm/ptrace.h>
> +
> +#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
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-18 16:29       ` Manoj Iyer
@ 2005-05-18 18:08         ` Daniel Jacobowitz
  2005-05-18 22:08           ` Manoj Iyer
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-18 18:08 UTC (permalink / raw)
  To: Manoj Iyer; +Cc: gdb-patches

On Wed, May 18, 2005 at 10:37:56AM -0500, Manoj Iyer wrote:
> 
> 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

My reading of the kernel source suggests that FPSCR should be accessible
using that address.  You should figure out why it isn't.

At a guess your headers are broken:
      /* NOTE: cagney/2005-02-08: On some 64-bit GNU/Linux systems the
         kernel headers incorrectly contained the 32-bit definition of
         PT_FPSCR.  For the 32-bit definition, floating-point
         registers occupy two 32-bit "slots", and the FPSCR lives in
         the secondhalf of such a slot-pair (hence +1).  For 64-bit,
         the FPSCR instead occupies the full 64-bit 2-word-slot and
         hence no adjustment is necessary.  Hack around this.  */

-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-18 18:08         ` Daniel Jacobowitz
@ 2005-05-18 22:08           ` Manoj Iyer
  0 siblings, 0 replies; 16+ messages in thread
From: Manoj Iyer @ 2005-05-18 22:08 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: gdb-patches


Looks like RHEL 4 ships wrong kernel headers, on RHEL4
/usr/include/linux/version.h: #define UTS_RELEASE "2.4.20", your patch
works sorta on SLES (/usr/include/linux/version.h: #define
UTS_RELEASE "2.6.5") running on a power5.

On the host side
----------------
 ./gdbserver 9.3.190.182:1234 /tmp/test
Process /tmp/test created; pid = 8323
Stop pc is 0x40010470
Listening on port 1234
Remote debugging from host 9.3.190.187
readchar: Got EOF
Remote side has terminated connection.  GDBserver will reopen the
connection.
Listening on port 1234


On remote side
--------------
 ./gdb
GNU gdb 6.3.50.20050516-cvs
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "powerpc64-unknown-linux-gnu".
Setting up the environment for debugging gdb.
No symbol table is loaded.  Use the "file" command.
No symbol table is loaded.  Use the "file" command.
.gdbinit:8: Error in sourced command file:
No breakpoint number 0.
(gdb) file /tmp/test
Reading symbols from /tmp/test...done.
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
(gdb) target remote 9.3.190.182:1234
Remote debugging using 9.3.190.182:1234
Remote register badly formatted:
T0501:00000000ffffe6b0;40:0000000040010470;
here: fffe6b0;40:0000000040010470;
(gdb)

-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

On Wed, 18 May 2005, Daniel Jacobowitz wrote:

> On Wed, May 18, 2005 at 10:37:56AM -0500, Manoj Iyer wrote:
> >
> > 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
>
> My reading of the kernel source suggests that FPSCR should be accessible
> using that address.  You should figure out why it isn't.
>
> At a guess your headers are broken:
>       /* NOTE: cagney/2005-02-08: On some 64-bit GNU/Linux systems the
>          kernel headers incorrectly contained the 32-bit definition of
>          PT_FPSCR.  For the 32-bit definition, floating-point
>          registers occupy two 32-bit "slots", and the FPSCR lives in
>          the secondhalf of such a slot-pair (hence +1).  For 64-bit,
>          the FPSCR instead occupies the full 64-bit 2-word-slot and
>          hence no adjustment is necessary.  Hack around this.  */
>
> --
> Daniel Jacobowitz
> CodeSourcery, LLC
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-24  4:17       ` Wu Zhou
@ 2005-05-24  8:29         ` Daniel Jacobowitz
  0 siblings, 0 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-24  8:29 UTC (permalink / raw)
  To: Wu Zhou; +Cc: gdb-patches

On Tue, May 24, 2005 at 02:32:09AM -0700, Wu Zhou wrote:
> > > normally factorial(6) will recursively call itself 5 times and return
> > > 720.  However while using 64-bit gdbserver on 64-bit binary, it doesn't
> > > call factorial(5) at all, return directly 6 as the result.
> > > 
> > > I am suspecting that "value > 1" doesn't get executed, so I change the
> > > conditional statement to "if (value - 1)", it worked!  So it turn out
> > > that "value > 1" always return 0 in this running context.  That is really
> > > odd.  Any clues you could thought of?  Thanks in advance.  
> >  
> > Um... your compiler must be broken, then.
> 
> Um...can't understand this.  If it is like this, how to interpret the fact  
> that it returns 720 correctly to run gdb.base/break standalone.  Anyway I 
> will try to find another box or another compiler to verify this.  Thanks.

I missed that in your message.  The other alternative is that a
breakpoint is somehow corrupting program state (condition codes, for
instance).  This could be a kernel bug or a GDB bug; it wouldn't be the
first time.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-23 18:26     ` Daniel Jacobowitz
@ 2005-05-24  4:17       ` Wu Zhou
  2005-05-24  8:29         ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Wu Zhou @ 2005-05-24  4:17 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: gdb-patches



On Mon, 23 May 2005, Daniel Jacobowitz wrote:

> Don't do that.  Please go read my proposal on gdb@, paying particular
> attention to the description of the MIPS execution environment.  The
> reason to always provide 64-bit registers if they are available is that
> they are physically present; the upper 32 bits can affect the behavior
> of the program in some cases.  So not displaying them can be very bad!

ok, I got it.  I will read your proposal more carefully.  Thanks.

> > That SIGFPE error disappeared after applying your patch to latest
> > GDB cvs tree.  But I met with another strange problem when debugging
> > gdb.base/break, which defines the following function:
> > 
> > int factorial (value)
> > int value;
> > #endif
> > {
> >   if (value > 1) {  /* set breakpoint 7 here */
> >         value *= factorial (value - 1);
> >     }
> >     return (value); /* set breakpoint 19 here */
> > }
> > 
> > normally factorial(6) will recursively call itself 5 times and return
> > 720.  However while using 64-bit gdbserver on 64-bit binary, it doesn't
> > call factorial(5) at all, return directly 6 as the result.
> > 
> > I am suspecting that "value > 1" doesn't get executed, so I change the
> > conditional statement to "if (value - 1)", it worked!  So it turn out
> > that "value > 1" always return 0 in this running context.  That is really
> > odd.  Any clues you could thought of?  Thanks in advance.  
>  
> Um... your compiler must be broken, then.

Um...can't understand this.  If it is like this, how to interpret the fact  
that it returns 720 correctly to run gdb.base/break standalone.  Anyway I 
will try to find another box or another compiler to verify this.  Thanks.

Cheers
- Wu Zhou


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-23 11:21   ` Wu Zhou
@ 2005-05-23 18:26     ` Daniel Jacobowitz
  2005-05-24  4:17       ` Wu Zhou
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-23 18:26 UTC (permalink / raw)
  To: Wu Zhou; +Cc: Manoj Iyer, gdb-patches

On Mon, May 23, 2005 at 06:57:48AM -0700, Wu Zhou wrote:
> 
> > Yes, this will not work.  The correct way to handle this is to wait
> > until I have implemented the available target features proposal I've
> > posted on gdb@, and then I can make gdbserver inform GDB that 64-bit
> > registers are available so that it will expect them.
> 
> So you are going to add a command for gdbserver to notify remote gdb 
> the availability of 64-bit registers?  That is good.  But I am also
> thinking of other ways.  The first solution I thought of is to let 
> gdbserver choose which set of registers to use according to the
> arch (32-bit or 64-bit) of the debuggee.  The other solution I could 
> thought of is to let host-side gdb accept 64-bit register as well.
> I even tried some coding with the second method.  It seems that it 
> worked sorta, at least I can set breakpoint, continue the process 
> and so on.  But I did met problems with "next" and "step" commands,
> which didn't go on with executing the process at all.  
> 
> Because I am not that familar with the code of gdb/gdbserver, so I
> am not very sure where to find the root cause of these problems.  I
> am also not sure whether these two methods are workable?  Would you
> please help evaluate this?  If it is really workable, what is the 
> pros and cons of these methods compared to your proposal?  Thanks 
> a lot! 

Don't do that.  Please go read my proposal on gdb@, paying particular
attention to the description of the MIPS execution environment.  The
reason to always provide 64-bit registers if they are available is that
they are physically present; the upper 32 bits can affect the behavior
of the program in some cases.  So not displaying them can be very bad!

> That SIGFPE error disappeared after applying your patch to latest
> GDB cvs tree.  But I met with another strange problem when debugging
> gdb.base/break, which defines the following function:
> 
> int factorial (value)
> int value;
> #endif
> {
>   if (value > 1) {  /* set breakpoint 7 here */
>         value *= factorial (value - 1);
>     }
>     return (value); /* set breakpoint 19 here */
> }
> 
> normally factorial(6) will recursively call itself 5 times and return
> 720.  However while using 64-bit gdbserver on 64-bit binary, it doesn't
> call factorial(5) at all, return directly 6 as the result.
> 
> I am suspecting that "value > 1" doesn't get executed, so I change the
> conditional statement to "if (value - 1)", it worked!  So it turn out
> that "value > 1" always return 0 in this running context.  That is really
> odd.  Any clues you could thought of?  Thanks in advance.  

Um... your compiler must be broken, then.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-22 20:40 ` Daniel Jacobowitz
  2005-05-22 21:01   ` Daniel Jacobowitz
@ 2005-05-23 11:21   ` Wu Zhou
  2005-05-23 18:26     ` Daniel Jacobowitz
  1 sibling, 1 reply; 16+ messages in thread
From: Wu Zhou @ 2005-05-23 11:21 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Manoj Iyer, gdb-patches


> Yes, this will not work.  The correct way to handle this is to wait
> until I have implemented the available target features proposal I've
> posted on gdb@, and then I can make gdbserver inform GDB that 64-bit
> registers are available so that it will expect them.

So you are going to add a command for gdbserver to notify remote gdb 
the availability of 64-bit registers?  That is good.  But I am also
thinking of other ways.  The first solution I thought of is to let 
gdbserver choose which set of registers to use according to the
arch (32-bit or 64-bit) of the debuggee.  The other solution I could 
thought of is to let host-side gdb accept 64-bit register as well.
I even tried some coding with the second method.  It seems that it 
worked sorta, at least I can set breakpoint, continue the process 
and so on.  But I did met problems with "next" and "step" commands,
which didn't go on with executing the process at all.  

Because I am not that familar with the code of gdb/gdbserver, so I
am not very sure where to find the root cause of these problems.  I
am also not sure whether these two methods are workable?  Would you
please help evaluate this?  If it is really workable, what is the 
pros and cons of these methods compared to your proposal?  Thanks 
a lot! 

> This will require some surgery in GDB, I'm sure.  The way MIPS
> implements this is not very reliable.
> 
> > Program received signal SIGFPE, Arithmetic exception.
> > 0x000000800013fd64 in .vfprintf () from /lib64/tls/libc.so.6
> > (gdb) 
> > 
> 
> I have no idea what causes this one, sorry.

That SIGFPE error disappeared after applying your patch to latest
GDB cvs tree.  But I met with another strange problem when debugging
gdb.base/break, which defines the following function:

int factorial (value)
int value;
#endif
{
  if (value > 1) {  /* set breakpoint 7 here */
        value *= factorial (value - 1);
    }
    return (value); /* set breakpoint 19 here */
}

normally factorial(6) will recursively call itself 5 times and return
720.  However while using 64-bit gdbserver on 64-bit binary, it doesn't
call factorial(5) at all, return directly 6 as the result.

I am suspecting that "value > 1" doesn't get executed, so I change the
conditional statement to "if (value - 1)", it worked!  So it turn out
that "value > 1" always return 0 in this running context.  That is really
odd.  Any clues you could thought of?  Thanks in advance.  

Cheers
- Wu Zhou


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-22 20:40 ` Daniel Jacobowitz
@ 2005-05-22 21:01   ` Daniel Jacobowitz
  2005-05-23 11:21   ` Wu Zhou
  1 sibling, 0 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-22 21:01 UTC (permalink / raw)
  To: Wu Zhou, Manoj Iyer, gdb-patches

On Sun, May 22, 2005 at 01:15:20PM -0400, Daniel Jacobowitz wrote:
> Yes, this will not work.  The correct way to handle this is to wait
> until I have implemented the available target features proposal I've
> posted on gdb@, and then I can make gdbserver inform GDB that 64-bit
> registers are available so that it will expect them.
> 
> This will require some surgery in GDB, I'm sure.  The way MIPS
> implements this is not very reliable.

I should add: it won't work for LinuxThreads libthread_db-based
debugging either.  I don't know if it will work for NPTL, but I hope
that it will.  Some changes were made to libthread_db to support this.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-19 14:46 Wu Zhou
  2005-05-19 17:52 ` Manoj Iyer
@ 2005-05-22 20:40 ` Daniel Jacobowitz
  2005-05-22 21:01   ` Daniel Jacobowitz
  2005-05-23 11:21   ` Wu Zhou
  1 sibling, 2 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2005-05-22 20:40 UTC (permalink / raw)
  To: Wu Zhou; +Cc: Manoj Iyer, gdb-patches

On Thu, May 19, 2005 at 04:07:06AM -0400, Wu Zhou wrote:
> 2. 64-bits gdbserver with 32-bits debuggee
> 
> without Daniel's patch, the 64-bits gdbserver on my power4 box also
> report "reading register I/O error" at register 1. After applying 
> Daniel's patch, gdbserver could start the 32-bits debuggee and begin
> to wait for the remote gdb's connection. 
> 
> On the host side, my gdb session is somewhat the same as yours. It
> seems that gdb at the host side expects 32-bits register, something
> like:
> 
>  T0501:ffffe6b0;40:40010470;
> 
> but the remote gdbserver sends back 64-bits value:
> 
>  T0501:00000000ffffe6b0;40:0000000040010470;
> 
> So it report "Remote register badly formatted" error. 

Yes, this will not work.  The correct way to handle this is to wait
until I have implemented the available target features proposal I've
posted on gdb@, and then I can make gdbserver inform GDB that 64-bit
registers are available so that it will expect them.

This will require some surgery in GDB, I'm sure.  The way MIPS
implements this is not very reliable.

> Program received signal SIGFPE, Arithmetic exception.
> 0x000000800013fd64 in .vfprintf () from /lib64/tls/libc.so.6
> (gdb) 
> 

I have no idea what causes this one, sorry.


-- 
Daniel Jacobowitz
CodeSourcery, LLC


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
  2005-05-19 14:46 Wu Zhou
@ 2005-05-19 17:52 ` Manoj Iyer
  2005-05-22 20:40 ` Daniel Jacobowitz
  1 sibling, 0 replies; 16+ messages in thread
From: Manoj Iyer @ 2005-05-19 17:52 UTC (permalink / raw)
  To: gdb-patches


Daniel,

Are you commiting your gdbserver patch? seems like that patch fixes
atleast 64bit debugger with 64bit debuggee.

-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

On Thu, 19 May 2005, Wu Zhou wrote:

> Quoting Manoj Iyer <manjo@austin.ibm.com>:
>
> > On the host side
> > ----------------
> >  ./gdbserver 9.3.190.182:1234 /tmp/test
> > Process /tmp/test created; pid = 8323
> > Stop pc is 0x40010470
> > Listening on port 1234
> > Remote debugging from host 9.3.190.187
> > readchar: Got EOF
> > Remote side has terminated connection.  GDBserver will reopen the
> > connection.
> > Listening on port 1234
> >
>
> It seems that file /tmp/test is a 32-bits binary.  I also tried 64-bits
> gdbsrever against 64-bits binary, it worked somewhat better, but failed
> at another place.  Below I will summarize my test results, wishing that
> it might be helpful to you.
>
> 1. 32-bits gdbserver with 32-bits debuggee
> on my power4 box, I can get a 32-bits gdbserver without "-m64" option.
> My test shows that it works well with 32-bits debuggee.
>
> 2. 64-bits gdbserver with 32-bits debuggee
>
> without Daniel's patch, the 64-bits gdbserver on my power4 box also
> report "reading register I/O error" at register 1. After applying
> Daniel's patch, gdbserver could start the 32-bits debuggee and begin
> to wait for the remote gdb's connection.
>
> On the host side, my gdb session is somewhat the same as yours. It
> seems that gdb at the host side expects 32-bits register, something
> like:
>
>  T0501:ffffe6b0;40:40010470;
>
> but the remote gdbserver sends back 64-bits value:
>
>  T0501:00000000ffffe6b0;40:0000000040010470;
>
> So it report "Remote register badly formatted" error.
>
> 3. 64-bits gdbserver with 64-bits debuggee
>
> With the patched 64-bits gdbserver. I could go some further with the
> 64-bits debuggee.  The target side gdbserver session is like this:
>
>  # ./gdbserver :2345 ../testsuite/gdb.base/break
> Process ../testsuite/gdb.base/break created; pid = 17669
> Stop pc is 0x80000053e0
> Listening on port 2345
> Remote debugging from host 127.0.0.1
> Stop pc is 0x8000013040
> Stop pc is 0x8000013040
> Stop pc is 0x80000075ec
> Stop pc is 0x8000013040
> Stop pc is 0x8000013040
> Stop pc is 0x8000012a20
> Stop pc is 0x8000013040
> Stop pc is 0x8000013040
> Stop pc is 0x8000012aac
> Stop pc is 0x100006a8
> Stop pc is 0x100006a8
> ...
>
> The host side gdb session is like this:
>
>  # ./gdb/gdb -q
> (gdb) file ./gdb/testsuite/gdb.base/break
> Reading symbols from ./gdb/testsuite/gdb.base/break...done.
> Using host libthread_db library "/lib64/tls/libthread_db.so.1".
> (gdb) target remote localhost:2345
> Remote debugging using localhost:2345
> 0x00000080000053e0 in ?? ()
> (gdb) bt
> #0  0x00000080000053e0 in ?? ()
> #1  0x0000000000000000 in ?? ()
> (gdb) b 94
> Breakpoint 1 at 0x100006a8: file ../../gdb/testsuite/gdb.base/break.c, line 94.
> (gdb) c
> Continuing.
>
> Breakpoint 1, main (argc=1, argv=0x1fffffff328, envp=0x1fffffff338) at ../../gdb/testsuite/gdb.base/break.c:94
> 94          printf ("%d\n", factorial (atoi ("6")));  /* set breakpoint 1 here */
> (gdb) s
> factorial (value=6) at ../../gdb/testsuite/gdb.base/break.c:111
> 111       if (value > 1) {  /* set breakpoint 7 here */
> (gdb) s
> 114         return (value); /* set breakpoint 19 here */
> (gdb) n
>
> Program received signal SIGFPE, Arithmetic exception.
> 0x000000800013fd64 in .vfprintf () from /lib64/tls/libc.so.6
> (gdb)
>
>
> > On remote side
> > --------------
> >  ./gdb
> > GNU gdb 6.3.50.20050516-cvs
> > Copyright 2004 Free Software Foundation, Inc.
> > GDB is free software, covered by the GNU General Public License, and you
> > are
> > welcome to change it and/or distribute copies of it under certain
> > conditions.
> > Type "show copying" to see the conditions.
> > There is absolutely no warranty for GDB.  Type "show warranty" for
> > details.
> > This GDB was configured as "powerpc64-unknown-linux-gnu".
> > Setting up the environment for debugging gdb.
> > No symbol table is loaded.  Use the "file" command.
> > No symbol table is loaded.  Use the "file" command.
> > .gdbinit:8: Error in sourced command file:
> > No breakpoint number 0.
> > (gdb) file /tmp/test
> > Reading symbols from /tmp/test...done.
> > Using host libthread_db library "/lib64/tls/libthread_db.so.1".
> > (gdb) target remote 9.3.190.182:1234
> > Remote debugging using 9.3.190.182:1234
> > Remote register badly formatted:
> > T0501:00000000ffffe6b0;40:0000000040010470;
> > here: fffe6b0;40:0000000040010470;
> > (gdb)
> >
>
>
>
>
> > -----
> > manjo
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > + Cogito ergo sum                                                          +
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> > On Wed, 18 May 2005, Daniel Jacobowitz wrote:
> >
> > > On Wed, May 18, 2005 at 10:37:56AM -0500, Manoj Iyer wrote:
> > > >
> > > > 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
> > >
> > > My reading of the kernel source suggests that FPSCR should be accessible
> > > using that address.  You should figure out why it isn't.
> > >
> > > At a guess your headers are broken:
> > >       /* NOTE: cagney/2005-02-08: On some 64-bit GNU/Linux systems the
> > >          kernel headers incorrectly contained the 32-bit definition of
> > >          PT_FPSCR.  For the 32-bit definition, floating-point
> > >          registers occupy two 32-bit "slots", and the FPSCR lives in
> > >          the secondhalf of such a slot-pair (hence +1).  For 64-bit,
> > >          the FPSCR instead occupies the full 64-bit 2-word-slot and
> > >          hence no adjustment is necessary.  Hack around this.  */
> > >
> > > --
> > > Daniel Jacobowitz
> > > CodeSourcery, LLC
> > >
> >
> >
>
>
> Cheers
> - Wu Zhou
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFC] gdb.server testcases (resend)
@ 2005-05-19 14:46 Wu Zhou
  2005-05-19 17:52 ` Manoj Iyer
  2005-05-22 20:40 ` Daniel Jacobowitz
  0 siblings, 2 replies; 16+ messages in thread
From: Wu Zhou @ 2005-05-19 14:46 UTC (permalink / raw)
  To: Manoj Iyer; +Cc: Daniel Jacobowitz, gdb-patches

Quoting Manoj Iyer <manjo@austin.ibm.com>:

> On the host side
> ----------------
>  ./gdbserver 9.3.190.182:1234 /tmp/test
> Process /tmp/test created; pid = 8323
> Stop pc is 0x40010470
> Listening on port 1234
> Remote debugging from host 9.3.190.187
> readchar: Got EOF
> Remote side has terminated connection.  GDBserver will reopen the
> connection.
> Listening on port 1234
> 

It seems that file /tmp/test is a 32-bits binary.  I also tried 64-bits 
gdbsrever against 64-bits binary, it worked somewhat better, but failed
at another place.  Below I will summarize my test results, wishing that
it might be helpful to you. 

1. 32-bits gdbserver with 32-bits debuggee
on my power4 box, I can get a 32-bits gdbserver without "-m64" option. 
My test shows that it works well with 32-bits debuggee.  

2. 64-bits gdbserver with 32-bits debuggee

without Daniel's patch, the 64-bits gdbserver on my power4 box also
report "reading register I/O error" at register 1. After applying 
Daniel's patch, gdbserver could start the 32-bits debuggee and begin
to wait for the remote gdb's connection. 

On the host side, my gdb session is somewhat the same as yours. It
seems that gdb at the host side expects 32-bits register, something
like:

 T0501:ffffe6b0;40:40010470;

but the remote gdbserver sends back 64-bits value:

 T0501:00000000ffffe6b0;40:0000000040010470;

So it report "Remote register badly formatted" error. 

3. 64-bits gdbserver with 64-bits debuggee

With the patched 64-bits gdbserver. I could go some further with the 
64-bits debuggee.  The target side gdbserver session is like this:

 # ./gdbserver :2345 ../testsuite/gdb.base/break
Process ../testsuite/gdb.base/break created; pid = 17669
Stop pc is 0x80000053e0
Listening on port 2345
Remote debugging from host 127.0.0.1
Stop pc is 0x8000013040
Stop pc is 0x8000013040
Stop pc is 0x80000075ec
Stop pc is 0x8000013040
Stop pc is 0x8000013040
Stop pc is 0x8000012a20
Stop pc is 0x8000013040
Stop pc is 0x8000013040
Stop pc is 0x8000012aac
Stop pc is 0x100006a8
Stop pc is 0x100006a8 
...

The host side gdb session is like this: 

 # ./gdb/gdb -q
(gdb) file ./gdb/testsuite/gdb.base/break
Reading symbols from ./gdb/testsuite/gdb.base/break...done.
Using host libthread_db library "/lib64/tls/libthread_db.so.1".
(gdb) target remote localhost:2345
Remote debugging using localhost:2345
0x00000080000053e0 in ?? ()
(gdb) bt
#0  0x00000080000053e0 in ?? ()
#1  0x0000000000000000 in ?? ()
(gdb) b 94
Breakpoint 1 at 0x100006a8: file ../../gdb/testsuite/gdb.base/break.c, line 94.
(gdb) c
Continuing.

Breakpoint 1, main (argc=1, argv=0x1fffffff328, envp=0x1fffffff338) at ../../gdb/testsuite/gdb.base/break.c:94
94          printf ("%d\n", factorial (atoi ("6")));  /* set breakpoint 1 here */
(gdb) s
factorial (value=6) at ../../gdb/testsuite/gdb.base/break.c:111
111       if (value > 1) {  /* set breakpoint 7 here */
(gdb) s
114         return (value); /* set breakpoint 19 here */
(gdb) n

Program received signal SIGFPE, Arithmetic exception.
0x000000800013fd64 in .vfprintf () from /lib64/tls/libc.so.6
(gdb) 


> On remote side
> --------------
>  ./gdb
> GNU gdb 6.3.50.20050516-cvs
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
> are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for
> details.
> This GDB was configured as "powerpc64-unknown-linux-gnu".
> Setting up the environment for debugging gdb.
> No symbol table is loaded.  Use the "file" command.
> No symbol table is loaded.  Use the "file" command.
> .gdbinit:8: Error in sourced command file:
> No breakpoint number 0.
> (gdb) file /tmp/test
> Reading symbols from /tmp/test...done.
> Using host libthread_db library "/lib64/tls/libthread_db.so.1".
> (gdb) target remote 9.3.190.182:1234
> Remote debugging using 9.3.190.182:1234
> Remote register badly formatted:
> T0501:00000000ffffe6b0;40:0000000040010470;
> here: fffe6b0;40:0000000040010470;
> (gdb)
> 




> -----
> manjo
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> + Cogito ergo sum                                                          +
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 
> On Wed, 18 May 2005, Daniel Jacobowitz wrote:
> 
> > On Wed, May 18, 2005 at 10:37:56AM -0500, Manoj Iyer wrote:
> > >
> > > 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
> >
> > My reading of the kernel source suggests that FPSCR should be accessible
> > using that address.  You should figure out why it isn't.
> >
> > At a guess your headers are broken:
> >       /* NOTE: cagney/2005-02-08: On some 64-bit GNU/Linux systems the
> >          kernel headers incorrectly contained the 32-bit definition of
> >          PT_FPSCR.  For the 32-bit definition, floating-point
> >          registers occupy two 32-bit "slots", and the FPSCR lives in
> >          the secondhalf of such a slot-pair (hence +1).  For 64-bit,
> >          the FPSCR instead occupies the full 64-bit 2-word-slot and
> >          hence no adjustment is necessary.  Hack around this.  */
> >
> > --
> > Daniel Jacobowitz
> > CodeSourcery, LLC
> >
> 
> 


Cheers
- Wu Zhou


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2005-05-24  2:03 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-05-17  2:38 [RFC] gdb.server testcases (resend) Manoj Iyer
2005-05-17 19:02 ` Manoj Iyer
2005-05-18  1:45 ` Daniel Jacobowitz
2005-05-18  9:52   ` Manoj Iyer
2005-05-18 16:01     ` Daniel Jacobowitz
2005-05-18 16:29       ` Manoj Iyer
2005-05-18 18:08         ` Daniel Jacobowitz
2005-05-18 22:08           ` Manoj Iyer
2005-05-19 14:46 Wu Zhou
2005-05-19 17:52 ` Manoj Iyer
2005-05-22 20:40 ` Daniel Jacobowitz
2005-05-22 21:01   ` Daniel Jacobowitz
2005-05-23 11:21   ` Wu Zhou
2005-05-23 18:26     ` Daniel Jacobowitz
2005-05-24  4:17       ` Wu Zhou
2005-05-24  8:29         ` Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox